vc++通过编程方式排除特定的代码行

VC++ programatically exclude specific lines of code

本文关键字:代码 排除 编程 方式 vc++      更新时间:2023-10-16

我没有找到任何我正在寻找的参考,所以最好是在这里问。假设我想要两个版本的程序。

现在我像这样做:

#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中。如何通过编程排除某些行,使它们在我想要的时候完全不存在

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

#if MY_VER
Function2();
#endif

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

您正在寻找预处理器"if":

#if(MY_VER)

注意"#"。别忘了以#endif结尾

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

Use #if MY_VER#endif

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