Cosa predefinito macro può utilizzare per rilevare clang?
-
27-09-2019 - |
Domanda
Sto cercando di rilevare il compilatore utilizzato per compilare il mio codice sorgente. Ho la ricerca predefinito delle macro per verificare la presenza o MSVC GCC (vedi http://predef.sourceforge.net/ per esempio), ma non riesco a trovare alcuna macro per verificare la presenza di clang.
Qualcuno sa se clang definisce una macro come __CLANG__
al fine di sapere che cosa sta attualmente compilando il mio codice?
Soluzione 2
Trovato la risposta utilizzando strings
+ grep
:
$ strings /usr/bin/clang | grep __ | grep -i clang
__clang__
Altri suggerimenti
Per ottenere un elenco di tutte le macro predefinite che utilizza il compilatore, utilizzare questo:
clang -dM -E -x c /dev/null
Si può fare lo stesso per gcc.
Questa domanda è stato risposto per anni, ma permettetemi di aggiungere (per riferimenti futuri) come si è fatto in di Windows :
echo | clang -dM -E -
come per GCC:
echo | gcc -dM -E -
Si prega di notare: L'ultima cruscotto -
in realtà è importante! (In caso contrario, si ottiene error: no input files
per entrambi i compilatori)