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