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?
Trouvé la réponse en utilisant strings
+ grep
:
$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
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.
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)