2010-10-18 4 views
10

J'avais réécrit un simple programme C++ en utilisant unix comme nom de variable. Mais la compilation du programme a échoué.Préprocesseur C++

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

Après avoir cherché beaucoup sur internet je suis arrivé à ce site qui m'a aidé en disant que unix est macro prédéfinie égale à 1.

Je veux savoir la liste de toutes ces macros prédéfinies.

+5

Macro prédéfinie en ** minuscules **? Semble bizarre: o – ereOn

+0

Plutôt, si vous utilisez un IDE, vous pouvez définir la couleur de la macro affichée comme une facilement identifiable. Visual Studio l'a. –

Répondre

22

Vous pouvez lister toutes les macros prédéfinies en utilisant le préprocesseur GNU cpp comme:

cpp -dM file.cpp 

Notez également que les macros telles que unix, linux sont non standard et vous pouvez les désactiver en utilisant l'option de compilation -ansi comme :

g++ -ansi file.cpp 

Et vous pouvez utiliser le drapeau -ansi avec cpp également pour obtenir la liste de toutes les macros prédéfinies standard:

cpp -dM -ansi file.cpp 
1

Je ne pense pas qu'il y ait une telle liste que vous demandez qui est disponible sur toutes les plateformes potentiel. Vous pouvez voir Pre-defined macros pour plus d'informations. Le 'gcc -dM' fonctionnera sous Linux.

1
$ uname 
Linux 

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