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