wie unbekannte defines anzeigen lassen ?

Gast #6977033
Lesenswert?

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 !
Gast #6977393
Lesenswert?

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 ?
Persönliche Seite #6977402
Lesenswert?

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
Gast #6977420
Lesenswert?

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 ?
Persönliche Seite #6977424
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren