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?

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top