Как я могу применить C-предварительную обработку только для одного определения-значения? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть файл 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 или пометить их каким-либо специальным комментарием или другим подобным«помощь» автора файла.

...