2015-06-08 2 views
1

Я пытаюсь сгенерировать различные функции с помощью макросов в C. Есть ли способ увидеть все функции, сгенерированные во время компиляции?Найти все функции, сгенерированные макросами

+0

Использовать параметры компилятора только для предварительной обработки файла? – crashmstr

+0

Должен быть способ заставить ваш компилятор вывести код, сгенерированный после обработки макросов, выполнить разницу с исходным исходным кодом, чтобы узнать, что было создано. –

+0

Да, просто запустите свой источник через препроцессор, например. 'gcc -E ...' –

ответ

0

Вы можете использовать опцию -E компилятора gcc для просмотра предварительно обработанного файла.

gcc -E main.c > main.i 
+0

Удалите записи включения заголовочного файла (#include), чтобы не получить кластерный вывод. Файл не будет компилироваться, просто остановится после предварительной обработки, поэтому вы не получите ошибок. – skrtbhtngr

+0

Спасибо. Могу ли я сделать что-то вроде g ++ -o testMacro -E testMacro.cpp. Узнайте макросы при генерации двоичных – ekhan

2

Если вы используете GCC, опционные -save-Temps сохраняет промежуточные этапы компиляции (предварительно обработанные файлы и сборку коду) при генерации бинарного.

Вы можете увидеть краткое описание here.

1

Вы можете использовать nm в объектном файле, чтобы получить имя общедоступного (не static) функций.

Вы можете передать -v вариант cc1, чтобы получить имя скомпилированных функций.

Вы также можете расширить свой недавний GCC компилятор с помощью MELT

И, конечно, вы могли бы получить препроцессированную форму, как и другие ответы предложили.