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

时间:2014-05-04 23:17:18

标签: 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”函数中的一些字符串仍然在exe中。如何编程排除某些行,所以当我想要它时,它们是完全不存在的。

3 个答案:

答案 0 :(得分:3)

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

#if MY_VER
Function2();
#endif

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

答案 1 :(得分:2)

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

#if(MY_VER)

请注意" #"。别忘了关闭#endif

答案 2 :(得分:1)

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

使用#if MY_VER ... #endif

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