Инструмент / синтаксический анализатор для инструкций препроцессора #if?

Я работаю над множеством файлов исходного кода C, которые содержат много препроцессоров #if , #elseif и #else .

Эти операторы часто проверяют наличие #define , например

#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif

Часто эти операторы препроцессора располагаются внутри операторов c-if, что делает исходный код почти нечитаемым для людей.

Операторы #define , используемые для этого препроцессора #if , определены в дополнительном файле.

Моя идея сейчас состоит в том, чтобы иметь инструмент, который проверяет эти настройки переключателя #define d, а затем копирует только те строки исходного кода, которые применяются с использованием текущих настроек # define / switch.

Для приведенного выше примера я хотел бы получить новый файл .c, который содержит только

/*code 2 */

, предполагается, что #define из Switch_TestMode не равно Switch_TestModeON .

Существуют ли инструменты (бесплатные || недорогие), которые выполняют эту работу? Или мне нужно написать для этого свой собственный синтаксический анализатор препроцессора?

(Я не могу запустить компилятор, используя специальный параметр, который выполняет эту работу, потому что наша компания создает исходный код C, а другая компания компилирует.)

Спасибо за любую подсказку!

С уважением

Томас

7
задан akavel 5 September 2012 в 13:31
поделиться