У меня есть файл C (заголовок) с кучей директив препроцессора - #define
, #ifdef
s, #if
s и, возможно, даже #pragma
s.
Теперь я хочучастично обработать этот файл, так что применяется только один вид директивы препроцессора: #if
, с условием, включающим определенную переменную (назовите ее MY_VAR
);и, конечно, соответствующие #else
и #endif
.Вы можете предположить, что если MY_VAR
используется в условии, никакое другое определение препроцессора не используется в этом условии;и что условия имеют вид MY_VAR [op] [value]
, где OP - операция сравнения, а VALUE - буквальное число.
Другими словами - я хочу сохранить части файла, которые имеют отношение к определенному значениюиз MY_VAR
- включая все определения препроцессора внутри них, оставленные нетронутыми и не развернутые.
Полагаю, это возможно путем написания сценария awk / perl и отслеживания «вложенности» директив препроцессора.Но - есть ли что-то более простое или более простое?
Примечание. Если это поможет, вы можете даже сделать предположения о пустом пространстве в строках с этими директивами #if
или пометить их каким-либо специальным комментарием или другим подобным«помощь» автора файла.