Was bedeutet es, wenn eine Klassendeklaration zwei Namen zu haben scheint?

8

Ich versuche, C ++ - Code zu verstehen, der die folgende Klassensyntax hat:

%Vor%

Ich kann die Syntax class Q_MONKEY_EXPORT BasePlugin nicht verstehen. Für mich sieht es so aus, als gäbe es zwei Namen für die Klasse. Was genau bedeutet diese Syntax in C ++?

    
Amani 20.10.2011, 19:03
quelle

3 Antworten

6

Q_MONKEY_EXPORT ist wahrscheinlich irgendwo #define. Defines, die manchmal benötigt werden, zum Beispiel, wenn die Klasse in einer Bibliothek ist und exportiert werden muss, wenn die Header-Datei von woanders enthalten ist. In diesem Fall wird die Definition in __declspec(dllexport) aufgelöst (die genaue Syntax hängt von den verwendeten Werkzeugen ab).

    
Dabbler 20.10.2011, 19:04
quelle
6

Das ist höchstwahrscheinlich eine Präprozessor-Anweisung, die dem Compiler mitteilt, dass das Symbol exportiert werden soll.

Es ist wahrscheinlich definiert als:

%Vor%

, wodurch Ihre Klasse in dll exportiert wird.

Die vollständige Deklaration wird vor der Kompilierung zu:

erweitert %Vor%

BEARBEITEN:

David Heffernan wies darauf hin, dass Makros wie diese normalerweise verwendet werden, um dem Compiler mitzuteilen, ob er die Symbole importieren oder exportieren muss. Wird normalerweise als dllimport für externe Module und dllexport beim Erstellen des Moduls definiert. Ich bezweifle, dass das hier der Fall ist, da der Name das Exportieren nahelegt, aber es ist am besten, die Dokumentation zu überprüfen oder tatsächlich zu der Definition zu gehen.

    
Luchian Grigore 20.10.2011 19:05
quelle
2

Q_MONKEY_EXPORT ist ein Makro (alles Großbuchstabe ist Konvention für Makro), das normalerweise in etwas wie __declspec(dllexport) aufgelöst wird, wenn Sie die DLL erstellen und in __declspec(dllimport) aufgelöst wird, wenn Sie die DLL verwenden.

Sie können genau herausfinden, was es ist, indem Sie Ihre Include-Dateien lesen.

    
David Heffernan 20.10.2011 19:05
quelle

Tags und Links