LINUX.ORG.RU

Препроцессор C


0

0

Как сделать, чтобы препроцессор C обрабатывал
только условные команды (#if, #else, #endif)?

То есть, имея файл
#ifdef FEATURE
// Фича
#else
// Нет фичи
#endif


при, скажем, cpp -DFEATURE

поиметь файл
// Фича


Короче как раскрыть условную компиляцию?

☆☆

man gcc

-E Stop after the preprocessing stage; do not run the compiler proper. The output is in the form of preprocessed source code, which is sent to the standard output.
Input files which don't require preprocessing are ignored.

Оно?

tzukko
()
Ответ на: комментарий от ip1981

Может тогда будет легче задействовать m4:)

ixrws ★★★
()

Можно использовать cpp с параметрами -nostdinc -undef, но директивы типа #include "localfile" будут раскрыты

DeKar
()

В связке с sed. Сначала sed-ом испортить все #-директривы кроме #if #else #endif. Потом позвать cpp. Потом sed-ом вернуть директивы в нормальный вид.

Manhunt ★★★★★
()
Ответ на: комментарий от Sova777

> И тогда сломается такой код:

Дефайны выводить седом два раза - в оригинальном и в испорченном виде.

P.S.: Знатный костыль получается. Правильно про m4 сказали :)

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.