Подтвердить что ты не робот

Выход препроцессора

Как просмотреть вывод, созданный предварительным процессором C, до его преобразования в объектный файл?

Я хочу посмотреть, что делают определения MACRO для моего кода.

4b9b3361

Ответ 1

gcc -E file.c

или

g++ -E file.cpp

сделает это за вас. Переключатель -E заставляет компилятор останавливаться после фазы предварительной обработки, плюя все полученные в данный момент на стандартный вывод.

Примечание. У вас должно быть несколько директив #include. Включенные файлы также получают предварительную обработку, поэтому вы можете получить много результатов.

Для Visual С++ коммутатор /E, который выводит вывод препроцессора на экран.

Ответ 2

Для GCC,

gcc -E -dM file.c

или

g++ -E -dM file.cpp

должен выполнить эту работу. -dM, поскольку руководство для препроцессора GNU помещает его, должно сгенерировать список директив #define для всех макросов, определенных во время выполнения препроцессора, включая предопределенные макросы.

Ответ 3

Вы также можете напрямую вызвать препроцессор C.

cpp infile outfile

Зайдите man cpp для получения дополнительной информации.

Ответ 4

Это зависит от используемого вами компилятора.
С помощью GCC вы можете указать флаг -E в командной строке, чтобы компилятор выдал выходной сигнал перед процессором.

Ответ 5

Вы можете проверить мой script, описанный здесь:

http://mosermichael.github.io/cstuff/all/projects/2011/09/16/preprocessor.html

Он форматирует вывод препроцессора в (надеюсь) читаемый html-документ: строки, которые отличаются из-за препроцессора, помечены в файле.