Hallo, eine Frage : In Programmierumgebungen wie bei cpp sind ja viele #defines initialisiert, z.B. "__cplusplus" etc. Die Prüfung darauf mit #ifdef ist trivial, aber wie kann man sich z.B. am Anfang eines Programmes eine Liste von vorhandenen #defines anzeigen lassen, ohne genau zu wissen, was alles definiert ist ? THX !
Danke, die Kommandos echo | gcc -dM -E - echo | gcc -x c++ -std=c++11 -dM -E - echo | gcc -x c++ -std=c++14 -dM -E - echo | gcc -x c++ -std=c++17 -dM -E - echo | gcc -x c++ -std=c++20 -dM -E - funktionieren bestens und geben jede Menge defines aus. Unter anderem als neueste Version #define __cplusplus 201703L Es handelt sich um den aktuellen mingw64 Compiler. Wie stellt sich das im Vergleich mit anderen C++ - Compilern dar ?
Rainer Zufall schrieb: > #define __cplusplus 201703L > > Es handelt sich um den aktuellen mingw64 Compiler. > Wie stellt sich das im Vergleich mit anderen C++ - Compilern dar ? Das __cplusplus Makro ist vom C++-Standard vorgegeben und hängt auch von den Compiler-Optionen ab. Wenn du also mit -std=c++14 kompilierst hat es einen anderen Wert (201402L). Im Prinzip sollte es immer die eingestellte Sprachversion anzeigen, unabhängig vom Compiler. Hier sind die definierten Werte aufgeführt: https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
Mit dem vorigen Post wollte ich zeigen, dass die aktuelle mingw64-Version bis zu "-std=c++17" unterstützt. Bei -std=c++20 kommt keine Antwort mehr. Wie sieht das bei anderen Compilern aus ?
Hier ist eine detaillierte Auflistung, welcher Compiler welche Sprachelemente unterstützt: https://en.cppreference.com/w/cpp/compiler_support Den Makro-Wert 201703L sollten Compiler natürlich nur setzen, wenn sie C++17 auch vollständig unterstützen. Solche Listen sind aber schnell veraltet. Am Besten schaut man sich konkret an, was der gewünschte Compiler derzeit unterstützt.
Und hier findet man eine Sammlung vordefinierter Makros: https://sourceforge.net/p/predef/wiki/Home/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.