C++ VC++;以编程方式排除特定代码行

C++ VC++;以编程方式排除特定代码行,c++,conditional-compilation,C++,Conditional Compilation,我没有找到任何关于我要找的东西的参考资料,所以最好在这里问一下。 假设我想要我的程序的2个版本 现在我做一些类似的事情: #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编译它时,“MY”函数中的一些字

我没有找到任何关于我要找的东西的参考资料,所以最好在这里问一下。 假设我想要我的程序的2个版本

现在我做一些类似的事情:

#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编译它时,“MY”函数中的一些字符串仍然在exe中。如何通过编程排除某些行,使它们在我希望的情况下完全不存在。

您可以使用预处理器删除它们,这样编译器甚至看不到这些行

如果我的版本,请使用
<代码>#endif


如果您想完全确定没有包含某些函数,那么不仅要对这些函数的调用使用条件编译,还要对函数定义本身使用条件编译。

您可以使用预处理器删除它们,这样编译器甚至看不到这些行

如果我的版本,请使用
<代码>#endif


如果您想完全确定某些函数未包含在内,则不仅要对这些函数的调用使用条件编译,还要对函数定义本身使用条件编译。

您正在寻找预处理器“If”:


请注意“
#
”。不要忘记用
#endif

关闭您正在寻找的前置处理器“if”:


请注意“
#
”。不要忘了用
#endif

结束。一个明显的可能性是使用预处理器:

#if MY_VER
Function2();
#endif

不太明显(但通常同样有效)的是只打开优化器。您所拥有的是死代码,大多数编译器可以非常有效地识别和删除这些代码。

一个明显的可能性是使用预处理器:

#if MY_VER
Function2();
#endif

不太明显(但通常同样有效)的是只打开优化器。你所拥有的是死代码,大多数编译器可以非常有效地识别和删除它。

使用
/OPT:REF/OPT:ICF
来积极消除VC++中未使用的内容。使用
/OPT:REF/OPT:ICF
来积极消除VC++中未使用的内容。