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.
Der Code, in dem ich das gesehen habe, ist hier: Ссылка Nur für den Fall, dass ich seinen Kontext zu abstrakt gemacht habe.
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:
(Pseudo-Code, ich bin mir nicht sicher, ob alle Attribute und Verknüpfungs-Qualifizierer vorhanden sind, aber Sie können sie im Code nachschlagen.)
Tags und Links class c++ c-preprocessor