Как просмотреть вывод, созданный предварительным процессором C, до его преобразования в объектный файл?
Я хочу посмотреть, что делают определения MACRO для моего кода.
Как просмотреть вывод, созданный предварительным процессором C, до его преобразования в объектный файл?
Я хочу посмотреть, что делают определения MACRO для моего кода.
gcc -E file.c
или
g++ -E file.cpp
сделает это за вас. Переключатель -E заставляет компилятор останавливаться после фазы предварительной обработки, плюя все полученные в данный момент на стандартный вывод.
Примечание. У вас должно быть несколько директив #include. Включенные файлы также получают предварительную обработку, поэтому вы можете получить много результатов.
Для Visual С++ коммутатор /E, который выводит вывод препроцессора на экран.
Для GCC,
gcc -E -dM file.c
или
g++ -E -dM file.cpp
должен выполнить эту работу. -dM, поскольку руководство для препроцессора GNU помещает его, должно сгенерировать список директив #define для всех макросов, определенных во время выполнения препроцессора, включая предопределенные макросы.
Вы также можете напрямую вызвать препроцессор C.
cpp infile outfile
Зайдите man cpp
для получения дополнительной информации.
Это зависит от используемого вами компилятора.
С помощью GCC вы можете указать флаг -E
в командной строке, чтобы компилятор выдал выходной сигнал перед процессором.
Вы можете проверить мой script, описанный здесь:
http://mosermichael.github.io/cstuff/all/projects/2011/09/16/preprocessor.html
Он форматирует вывод препроцессора в (надеюсь) читаемый html-документ: строки, которые отличаются из-за препроцессора, помечены в файле.