2017-04-11 17 views
0

Ich habe gerade versucht, auf einige "Klick" cpp-Module zu arbeiten. Ich kam quer durch diese Syntaxcpp-Syntax für CLICK-Module

class SimpleQueue : public Element, public Storage { public: 
SimpleQueue() CLICK_COLD; 
int configure(Vector<String>&, ErrorHandler*) CLICK_COLD; 

Ich frage mich, was diese Syntax "CLICK_COLD" ist?

https://github.com/kohler/click/blob/master/elements/standard/simplequeue.hh

Dies ist nur eine Datei. Aber es gibt mehr als eine Datei, die diese "CLICK_COLD" überall verwendet. Nicht sicher, was ist diese Syntax in cpp?

Im Allgemeinen wollte ich verstehen, was ist XYZ_YYY nach irgendeiner Methode oder Konstruktor bedeuten in cpp?

+0

Warum ist diese Frage in so vielen verschiedenen Sprachen markiert? Überarbeiten Sie Ihre Frage bitte und entfernen Sie unnötige Tags. – CodingNinja

Antwort

2

Es heißt Preprocessor Directives. Sie können herausfinden, wie es in config.h definiert ist:

/* Define macro for cold (rarely used) functions. */ 
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) 
# define CLICK_COLD /* nothing */ 
#else 
# define CLICK_COLD __attribute__((cold)) 
#endif 

Was es tut, ist, wenn die Version des Compilers hoch genug ist, Attribute Syntax zu unterstützen, dann verwenden __attribute__((cold)) oder sonst nichts tun.

__GNUC__ und __GNUC_MINOR__ erzählt the version of the compiler Sie verwenden.

cold ist eine der common function attributes, wie folgt beschrieben:

Das kalte Attribut auf Funktionen verwendet wird, die Compiler zu informieren, dass die Funktion unwahrscheinlich ist, ausgeführt werden. Die Funktion ist für die Größe und nicht für die Geschwindigkeit optimiert, und bei vielen Zielen ist sie in einem speziellen Unterabschnitt des Textabschnitts angeordnet, so dass alle kalten Funktionen nahe beieinander liegen und die Codelokalität von nicht-kalten Teilen des Programms verbessert wird. Die Pfade, die zu Aufrufen von Cold-Funktionen innerhalb des Codes führen, werden durch den Verzweigungsvorhersagemechanismus als unwahrscheinlich markiert. Es ist daher nützlich, Funktionen zu markieren, die verwendet werden, um unwahrscheinliche Bedingungen, wie z. B. Perror, als kalt zu behandeln, um die Optimierung von heißen Funktionen zu verbessern, die in seltenen Fällen markierte Funktionen aufrufen.

Zusammenfassend wird jede Funktion mit CLICK_COLD selten verwendet, was dem Compiler hilft, dies zu optimieren.

+0

Danke @Dean. Es war hilfreich – YOGI

+0

können Sie mich bitte wissen woher haben Sie das? "Das kalte Attribut auf Funktionen wird verwendet, um den Compiler zu informieren, dass die Funktion wahrscheinlich nicht ausgeführt wird. Die Funktion ist für Größe optimiert." – YOGI

+0

@YOGI Ich habe gerade meine Antwort mit dem Link zum Attribut aktualisiert Beschreibungsseite. –

Verwandte Themen