11 Stimmen

C++-Präprozessor

Ich hatte ein einfaches C++-Programm umgeschrieben, das unix als Variablenname. Aber die Kompilierung des Programms schlug fehl.

#include <iostream>
int main() {
        int unix = 1;
        return 0;
}

Nachdem ich viel im Internet gesucht habe, bin ich auf diese Website gestoßen, die mir geholfen hat, indem sie sagte, dass unix ist ein vordefiniertes Makro, das gleich ist mit 1 .

Ich möchte eine Liste aller dieser vordefinierten Makros kennen.

24voto

codaddict Punkte 426877

Sie können alle vordefinierten Makros auflisten, indem Sie den GNU-Präprozessor verwenden cpp als:

cpp -dM file.cpp

Beachten Sie auch, dass Makros wie unix , linux sind nicht standardisiert und können mit der Option -ansi Kompilierungskennzeichen als:

g++ -ansi file.cpp

Und Sie können die -ansi Flagge mit cpp auch, um die Liste aller vordefinierten Standardmakros zu erhalten:

cpp -dM -ansi file.cpp

4voto

Rohit Punkte 525

Touch mysymdef.h; g++ -dM mysymdef.h Es wird eine Datei mysymdef.h.gch erzeugt, die alle vordefinierten Symbole/Makros für Ihr System enthält. Die Datei ist binär, aber mit etwas Bearbeitung wird sie funktionieren.

für Einzelheiten siehe

http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation

http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html

1voto

ldav1s Punkte 15247

Ich glaube nicht, dass es eine solche Liste gibt, die für alle möglichen Plattformen verfügbar ist. Sie möchten vielleicht sehen Vordefinierte Makros für weitere Informationen. Der 'gcc -dM' wird unter Linux funktionieren.

1voto

Robert Punkte 441
$ uname 
Linux

$ cpp -dM <<<'' | grep unix
#define __unix__ 1
#define __unix 1
#define unix 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X