C ++ Pre-Prozessor definiert nach dem Schlüsselwort der Klasse und vor dem Klassennamen

8

Ich bin kürzlich auf diese Art von Code in einer OpenGL-Shader-Klasse gestoßen und bin mir seiner Verwendung nicht sicher.

Wie ich es verstehe, lesen Sie IBM Dokumentation , das #define ONEWORD wird jedes Vorkommen von ONEWORD im folgenden Text entfernen.

Was ist der Zweck von ONEWORD in diesem Code überhaupt, wenn alle Vorkommen entfernt werden? Was bedeutet ein Token nach einem Klassenschlüsselwort, aber vor einem Klassennamen wirklich?
Ich habe in der Vergangenheit nur #define für Include-Wachen benutzt, also ist das für mich völlig neu.

%Vor%

Der Code, in dem ich das gesehen habe, ist hier: Ссылка Nur für den Fall, dass ich seinen Kontext zu abstrakt gemacht habe.

    
Katawa Tenshu 04.04.2013, 06:11
quelle

2 Antworten

4

Oh, also nachdem wir uns den tatsächlichen Code angesehen haben, ist es nicht ONEWORD , sondern GLSAPI . Diese XYZ_API -Makros werden oft für die bedingte Angabe von plattformspezifischen Verknüpfungen verwendet, z. B. einige __attributes__ , die eine unterschiedliche Behandlung erfordern, z. B. für Windows und Unix. Sie können also erwarten, dass GLSAPI in einer der Header-Dateien (vielleicht in config.h ) wie folgt definiert wird:

%Vor%

(Pseudo-Code, ich bin mir nicht sicher, ob alle Attribute und Verknüpfungs-Qualifizierer vorhanden sind, aber Sie können sie im Code nachschlagen.)

    
user529758 04.04.2013, 06:21
quelle
5

Damit können Sie einfach compilerspezifische Schlüsselwörter zu Ihrer Klassendeklaration hinzufügen. Wenn Sie beispielsweise mit Visual Studio diese Klasse in eine DLL einfügen wollten, würden Sie Ihre Definition in

ändern %Vor%

Siehe hier für ein anderes Beispiel

    
john 04.04.2013 06:18
quelle

Tags und Links