В любом случае, чтобы увидеть список макросов, определенных препроцессором?

Я хотел бы видеть все макросы, которые определены вызовом компилятора, который я использую. Есть какой-либо способ сделать это? Я видел в руководстве это говорит, что вы можете использоватьcpp -dM  но это не работает для меня. Возможно, я делаю что-то не так?

Когда я бегу:

cpp -dM

Я вообще не получаю вывод от препроцессора. Если я попытаюсь добавить-dM в качестве опции для gcc я не замечаю никакой разницы.

 Oliver Charlesworth05 июн. 2012 г., 23:01
«У меня не работает» - пожалуйста, будьте более информативным!
 Brandon Yates05 июн. 2012 г., 23:04
Роб, спасибо, мне придется попытаться выяснить, как это сделать из окон, к сожалению, я застрял, используя. Я использую кросс-компилятор исходного кода для arm. (Порт gcc по существу)
 Brandon Yates05 июн. 2012 г., 23:03
Извините я попытался прояснить это немного
 Robᵩ05 июн. 2012 г., 23:03
На моем компьютере с Linux выводcpp -dM < /dev/null | wc -l является124Таким образом, есть 124 предопределенных значения.cpp -dM < /dev/null | less показывает мне, что они есть. Каковы результаты этих команд на вашем компьютере?

Ответы на вопрос(2)

По умолчанию,cpp -dM будет читать свой входной файл из стандартного ввода и записывать в стандартный вывод. Поскольку вы не пытаетесь предварительно обработать какой-либо ввод, вы можете передать ему пустой ввод, используя/dev/null:

# Option 1
cpp -dM < /dev/null
# Optio n2
cpp -dM /dev/null

В Windows вы можете использоватьNUL псевдофайл вместо/dev/null.

Решение Вопроса

Ты можешь использовать:

gcc -dM -E - < /dev/null

Обратите внимание, что вы также можете получить макросы компилятора в дополнение к этой команде:

touch bla.c && gcc -dM -E bla.c

Например на моем компьютере:

$ touch bla.c && gcc -dM -E bla.c | wc -l
486
$ gcc -dM -E - < /dev/null | wc -l
124
$
 05 июн. 2012 г., 23:21
@ Кристоф на самом деле я попробовал первымgcc -xc -dM -E - < /dev/null для моего второго примера, но это не похоже на работу с-dM (тот же результат, что и в первом примере)
 05 июн. 2012 г., 23:26
здесь работает как положено (gcc-4.5.3 / MinGW-w64)
 05 июн. 2012 г., 23:30
@Christoph хорошо, так что это было исправлено, потому что это не на моем gcc-4.4.3 / Linux
 05 июн. 2012 г., 23:18
также полезны-xc, -xc++ а также-std=... так что вы можете сравнить определения языка и диалекта

Ваш ответ на вопрос