¿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.