2010-10-18 15 views
10

Reescribí un programa sencillo de C++ utilizando unix como nombre de variable. Pero la compilación del programa falló.Preprocesador de C++

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

Después de buscar mucho en internet llegué a esta página web que me ayudó diciendo que es unix macro predefinida igual a 1.

Quiero saber la lista de todas estas macros predefinidas.

+5

Macro predefinida en ** minúsculas **? Parece extraño: o – ereOn

+0

Más bien, si está utilizando un IDE, puede establecer el color de la macro mostrada como fácilmente identificable. Visual Studio lo tiene. –

Respuesta

22

Puede listar todas las macros predefinidas utilizando el preprocesador GNU cpp como:

cpp -dM file.cpp 

También tenga en cuenta que las macros como unix, linux son no estándar y se puede desactivar mediante el uso de la bandera -ansi compilación como :

g++ -ansi file.cpp 

Y puede utilizar la bandera -ansi con cpp también para obtener la lista de todas las macros predefinidas estándar:

cpp -dM -ansi file.cpp 
1

No creo que haya una lista como la que está pidiendo que está disponible a través de todas las plataformas posibles. Es posible que desee ver Pre-defined macros para obtener más información. El 'gcc -dM' funcionará en Linux.

1
$ uname 
Linux 

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