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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.