2011-10-10 50 views
0

編譯源在我的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 debug\n"; 
    #endif 
    cout << "hello\n"; 
    return 0; 
} 

和運行腳本後,輸出應該是

#include <iostream> 
//#define DEBUG 
int main(){ 
    cout << "hello\n"; 
return 0; 
} 
+3

心不是預處理器做什麼? – slartibartfast

+1

不,我想OP不希望替換'#define'd符號,評估其他'#ifdef',插入'#include'等。 –

回答

2

只是運行預處理不夠好?例如g++ -E

+0

我剛剛嘗試過,但它也生成stl的代碼。爲了更清楚我只想要沒有stl生成的代碼的相同的CPP,但只是#ifdef下的代碼被剝離了。 – dchhetri

1

只要用適當的定義運行你的編譯器的預處理器。在Windows上,這將是cl /EP file和Linux gcc -E。最有可能的是,你必須通過你的定義,使用-DFoo

0

預處理器執行此操作。

您可以使用g++ -E somefile.cpp來查看它生成的內容。