Я пытаюсь определить компилятор, использованный для компиляции моего исходного кода. Я могу легко найти предопределенные макросы для проверки на MSVC или GCC (см., Например, http://predef.sourceforge.net/), но не могу найти макрос для проверки на clang.
Кто-нибудь знает, определяет ли clang макрос типа __CLANG__, чтобы знать, что в данный момент компилирует мой код?
__CLANG__
Чтобы получить список всех предопределенных макросов, которые использует компилятор, используйте это:
clang -dM -E -x c /dev/null
Вы можете сделать то же самое для gcc.
Нашел ответ, используя strings + grep:
strings
grep
$ strings /usr/bin/clang | grep __ | grep -i clang __clang__
На этот вопрос отвечали годами, но позвольте мне добавить (для дальнейшего использования), как это делается в Windows :
echo | clang -dM -E -
То же, что и для GCC:
echo | gcc -dM -E -
Обратите внимание: последний штрих - действительно важен! (В противном случае вы получите error: no input files для обоих компиляторов)
-
error: no input files