Я пытаюсь сгенерировать различные функции с помощью макросов в C. Есть ли способ увидеть все функции, сгенерированные во время компиляции?Найти все функции, сгенерированные макросами
ответ
Вы можете использовать опцию -E компилятора gcc для просмотра предварительно обработанного файла.
gcc -E main.c > main.i
Удалите записи включения заголовочного файла (#include), чтобы не получить кластерный вывод. Файл не будет компилироваться, просто остановится после предварительной обработки, поэтому вы не получите ошибок. – skrtbhtngr
Спасибо. Могу ли я сделать что-то вроде g ++ -o testMacro -E testMacro.cpp. Узнайте макросы при генерации двоичных – ekhan
Если вы используете GCC, опционные -save-Temps сохраняет промежуточные этапы компиляции (предварительно обработанные файлы и сборку коду) при генерации бинарного.
Вы можете увидеть краткое описание here.
Вы можете использовать nm
в объектном файле, чтобы получить имя общедоступного (не static
) функций.
Вы можете передать -v
вариант cc1
, чтобы получить имя скомпилированных функций.
Вы также можете расширить свой недавний GCC компилятор с помощью MELT
И, конечно, вы могли бы получить препроцессированную форму, как и другие ответы предложили.
Использовать параметры компилятора только для предварительной обработки файла? – crashmstr
Должен быть способ заставить ваш компилятор вывести код, сгенерированный после обработки макросов, выполнить разницу с исходным исходным кодом, чтобы узнать, что было создано. –
Да, просто запустите свой источник через препроцессор, например. 'gcc -E ...' –