2014-05-04 50 views
0

我沒有找到任何我正在尋找的參考,所以最好的方法是在這裏問。 可以說我想要我的程序的2版本。VC++以編程方式排除特定行代碼

現在我做這樣的事情:

#define MY_VER 0 //0 or 1 depending on which version I want to compile 

Function1(); 
if(MY_VER) 
Function2(); //It will run only if MY_VER is set 

現在我有很多的代碼,這樣,但即使當我MY_VER = 0某些字符串的編譯「我的」功能仍處於exe文件。如何編程排除某些行,所以當我希望它是這樣的時候,它們完全不存在。

回答

3

一個明顯的可能性是使用預處理:

#if MY_VER 
Function2(); 
#endif 

不太明顯(但通常同樣有效),是剛剛打開的優化。你有什麼是死代碼,大多數編譯器可以很有效地識別和刪除。

+0

非常感謝。 – user3213103

+0

請使用'/ OPT:REF/OPT:ICF'來積極消除VC++中未使用的東西。 – MSalters

1

您可以使用預處理器刪除它們,因此編譯器甚至不會看到這些行。

使用#if MY_VER ... #endif

如果你想完全肯定,有些功能不包括在內,使用條件編譯不僅爲調用這些功能,但對於函數定義自己。

2

您正在尋找的預處理器 「如果」:

#if(MY_VER) 

注意 「#」。不要忘記關閉#endif

相關問題