Определение значения токена препроцессора - PullRequest
3 голосов
/ 07 июня 2011

Как узнать, какое значение определения __GNUC__ указано в моем компиляторе C ++?

Ответы [ 3 ]

7 голосов
/ 07 июня 2011

Вы можете получить все предопределенные макросы GCC с этим:

g++ -dM -E - < /dev/null

Быстрый grep даст вам то, что вы хотите.

3 голосов
/ 07 июня 2011

Используйте режим gcc «только для предварительной обработки» (-E) (и для удобства введите его через STDIN, а не через файл):

[tomalak@renee ~]$ echo "__GNUC__" | g++ -E -
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
4

Я не уверен, каковы первые четыре строки вывода, но последняя строка - то, что вы ищете.

1 голос
/ 07 июня 2011

Это работает для любого макроса:

echo "int main() {}" | gcc -xc++ -ggdb3 -
readelf --debug-dump=macro a.out | grep MACRO_YOU_ARE_LOOKING_FOR

или

dwarfdump -m a.out | grep MACRO_YOU_ARE_LOOKING_FOR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...