#define für c++0x standard
-
Hallo,
gibt es eine vordefinierte define Anweisung um Code auszukommentieren, wenn der Compiler den c++0x Standard noch nicht unterstützt.
In meinem Falle versuche ich ein Programm mit nvcc zu kompilieren, verwende aber Teile einer Funktions- und Klassensammlung, die bereits den Move-Konstruktor unterstützt. Das gefällt nvcc wohl nicht so.Ich suche etwas wie
#ifdef _C++0X_ // Move-Konstruktor hier // #endifGibt es da etwas? Oder muss ich das von Hand dem Compiler übergeben?
-
Gibt es nicht. Es ergibt auch eher Sinn, die herstellerspezifischen Makros für die Compilerversion abzufragen. Die unterschiedlichen Compiler und deren Versionen unterstützen den Standard jeweils unterschiedlich gut. Selbst ISO/IEC 14882:2003 unterstützt kaum ein Compiler so richtig vollständig. Die meisten aktuellen Compiler sind allerdings nahe an der Vollständigkeit dran.
-
Sowas?
#ifdef CPLUSPLUS_0X #define CPP0X_PART(Code) Code #else #define CPP0X_PART(Code) #endifAnwendung:
CPP0X_PART( // dein Move-Konstruktor hier )
-
Das
__cplusplus-Makro hat doch in C++98 den Wert 199711L (für Nov. 1997, das Verabschiedungsdatum anscheinend). Sollte es dann nicht auch für C++0x einen entsprechenden Wert geben?
-
-
Nexus schrieb:
[...]
Das das zwingend definiert?
-
Oh super. Vielen Dank!
-
Tachyon schrieb:
Das das zwingend definiert?
Sorry, falls das falsch rüberkam:
CPLUSPLUS_0Xist kein offizielles Makro, sondern ein von mir erfundener Platzhalter. Entweder man setzt ihn selbst projektweit, oder man orientiert sich an Bashars Ansatz.
-
Bashar schrieb:
Das
__cplusplus-Makro hat doch in C++98 den Wert 199711L (für Nov. 1997, das Verabschiedungsdatum anscheinend). Sollte es dann nicht auch für C++0x einen entsprechenden Wert geben?Wird es geben, nur ist er noch nicht definiert. Im aktuellen Draft n3126 auf Seite 411 (tatsächlich 425) steht als Wert noch ein [tbd] ("to be discussed", "to be done", "to be defined", "to be decided", "to be determined" oder was auch immer).
Grüssli