Ответ 1
Да. Используйте параметр -E
:
gcc -E foo.c
Есть ли опция, чтобы препроцессор GCC мог генерировать исходный код C и отфильтровывать нерелевантный исходный код?
Например, файл .c
имеет переключатель #define
для определения для многих разных платформ. Меня интересует только одна платформа, и я хочу, чтобы препроцессор C отфильтровывал несвязанный код.
Поддерживает ли это GCC?
Да. Используйте параметр -E
:
gcc -E foo.c
Пока параметр -E
выполняет всю предварительную обработку, он также производит очень "сырой" вывод, который может быть не таким, каким вы хотите (в зависимости от того, что вы хотите).
Если вам нужно отладить расширение макроса, которое не делает то, что вы ожидаете, E
- хороший способ. Если вы просто хотите отфильтровать "неактивный код", но оставите оставшийся код в более или менее оригинальной форме, вы можете посмотреть ответы на следующий вопрос "Переполнение стека":
Похоже, вы хотите unifdef, а не препроцессор GCC.