Любой скрипт для удаления скомпилированного исходного кода на C

#c #debugging #c-preprocessor

#c #отладка #c-препроцессор

Вопрос:

В моем файле C у меня есть

 #ifdef DEBUG 
    then blah
#else 
    blooh. 
  

Я хочу удалить весь текст, который не компилируется после предварительной обработки, так что, если DEBUG не определено, тогда все операторы вида:

 #ifdef DBUG 
    /* some debug code */ 
#endif
  

удаляется из исходного кода.

РЕДАКТИРОВАТЬ: вот пример :

 #include <iostream>
//#define DEBUG
int main(){
  #ifdef DEBUG
      cout << "In debugn";
  #endif
     cout << "hellon";
  return 0;
 }
  

И после запуска скрипта вывод должен быть

 #include <iostream>
//#define DEBUG
int main(){
  cout << "hellon";
 return 0;
}
  

Комментарии:

1. разве это не то, что делает препроцессор?

2. Нет. Я полагаю, что OP не хочет #define , чтобы символы d заменялись, другие #ifdef оценивались, #include вставлялись s и т. Д.

Ответ №1:

Недостаточно ли просто запустить препроцессор? Например g -E ?

Комментарии:

1. Я только что попробовал, но он также генерирует код stl. Чтобы быть более понятным, я просто хочу тот же CPP без сгенерированного stl кода, но только удален код под #ifdef .

Ответ №2:

Просто запустите препроцессор вашего компилятора с соответствующими defines . В Windows это было бы cl /EP file и в Linux gcc -E . Скорее всего, вам также придется передать свои определения, используя -DFoo .

Ответ №3:

Я не знаю ответа на ваш вопрос, но Google знает:

Ответ №4:

Это делает препроцессор.

Вы можете использовать g -E somefile.cpp , чтобы увидеть, что он генерирует.