web-dev-qa-db-fra.com

Quelle macro prédéfinie puis-je utiliser pour détecter le clang?

J'essaie de détecter le compilateur utilisé pour compiler mon code source. Je peux facilement trouver des macros prédéfinies pour vérifier MSVC ou GCC (voir http://predef.sourceforge.net/ par exemple), mais je ne trouve aucune macro pour vérifier le clang.

Est-ce que quelqu'un sait si clang définit une macro comme __CLANG__ afin de savoir ce qui compile actuellement mon code?

107
Pierre Bourdon

Trouvé la réponse en utilisant strings + grep:

$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
75
Pierre Bourdon

Pour obtenir une liste de toutes les macros prédéfinies utilisées par le compilateur, utilisez ceci:

clang -dM -E -x c /dev/null

Vous pouvez faire de même pour gcc.

115
Chris Suter

Cette question a été répondue pendant des années, mais permettez-moi d'ajouter (pour référence future) comment cela se fait dans Windows:

echo | clang -dM -E -

comme pour GCC:

echo | gcc -dM -E -

Remarque: le dernier tiret - est vraiment important! (Sinon, vous obtenez error: no input files pour les deux compilateurs)

39
Bernd Elkemann