c macros clang c-preprocessor

¿Qué macro predefinida puedo usar para detectar clang?



macros c-preprocessor (3)

Encontré la respuesta usando strings + grep :

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

Intento detectar el compilador utilizado para compilar mi código fuente. Puedo encontrar fácilmente macros predefinidas para comprobar MSVC o GCC (ver http://predef.sourceforge.net/ por ejemplo), pero no puedo encontrar ninguna macro para comprobar el sonido metálico.

¿Alguien sabe si clang define una macro como __CLANG__ para saber qué está compilando actualmente mi código?


Esta pregunta ha sido respondida durante años, pero permítanme agregar (para referencia futura) cómo se hace en Windows :

echo | clang -dM -E -

lo mismo que para GCC:

echo | gcc -dM -E -

Tenga en cuenta: ¡el último guión es realmente importante! (De lo contrario, obtiene el error: no input files para ambos compiladores)


Para obtener una lista de todas las macros predefinidas que utiliza el compilador, use esto:

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

Puedes hacer lo mismo para gcc.