Компилятор C / C ++, перечисляющий, что определено - PullRequest
2 голосов
/ 29 апреля 2011

Этот вопрос: Есть ли способ узнать, компилируется ли сейчас код как часть PCH? побудить меня задуматься над этим.

Есть ли способ, , возможно, только в определенных компиляторах , получить компилятор C / C ++ для выгрузки определений, которые он использует в настоящее время?

Edit: я знаю, что это технически проблема препроцессора, но давайте добавим это в термин компилятор.

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Boost Wave (библиотека препроцессора, в состав которой входит драйвер командной строки) включает возможность трассировки для отслеживания расширений макросов. Хотя, возможно, это немного больше, чем вы просите - он отображает не только конечный результат, но, по сути, каждый шаг расширения макроса (даже очень сложного).

Препроцессор clang несколько похож. Это также библиотека, которая включает драйвер командной строки. Препроцессор определяет тип macro_iterator и macro_begin / macro_end этого типа, что позволит вам обходить таблицу символов препроцессора и делать с ней практически все, что вы хотите (включая печать символов) конечно).

1 голос
/ 29 апреля 2011

Да.В GCC

g++ -E -dM <file>

Держу пари, что это возможно практически во всех компиляторах.

...