2010-10-18 7 views
10

Napisałem prosty program w języku C++, używając unix jako nazwy zmiennej. Ale kompilacja programu nie powiodła się.preprocesor C++

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

Po wyszukaniu dużo w internecie dotarłem do tej strony internetowej, który pomógł mi przez to powiedzieć, że unix predefiniowane makro równe 1.

Chcę poznać listę wszystkich takich wstępnie zdefiniowanych makr.

+5

Wstępnie zdefiniowane makro w ** małej literie **? Wydaje się dziwne: o – ereOn

+0

Zamiast tego, jeśli używasz IDE, możesz ustawić kolor wyświetlanego makra jako łatwo identyfikowalny. Visual Studio to ma. –

Odpowiedz

22

Można wyświetlić listę wszystkich predefiniowanych makr za pomocą preprocesora GNU cpp jak:

cpp -dM file.cpp 

również pamiętać, że makra, takich jak unix, linux są niestandardowe i można je wyłączyć za pomocą flagi -ansi kompilacji jako :

g++ -ansi file.cpp 

I można użyć flagi -ansi z cpp również uzyskać listę wszystkich standardowych predefiniowanych makr:

cpp -dM -ansi file.cpp 
1

Nie sądzę, istnieje taka lista, jak proszą o to dostępne w poprzek każdego potencjalnego platformy. Możesz uzyskać więcej informacji na temat Pre-defined macros. "Gcc -dM" zadziała w systemie Linux.

1
$ uname 
Linux 

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