我没有找到任何关于我正在寻找的东西的参考,所以最好是问这里。 让我们说我想拥有我的程序的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中。如何编程排除某些行,所以当我想要它时,它们是完全不存在的。
答案 0 :(得分:3)
一个明显的可能性是使用预处理器:
#if MY_VER
Function2();
#endif
不太明显(但通常同样有效)就是打开优化器。你有什么是死代码,大多数编译器可以非常有效地识别和删除。
答案 1 :(得分:2)
您正在寻找预处理器" if":
#if(MY_VER)
请注意" #
"。别忘了关闭#endif
。
答案 2 :(得分:1)
您可以使用预处理器删除它们,因此编译器甚至看不到这些行。
使用#if MY_VER
... #endif
如果您想完全确定某些函数不包含在内,请不仅要对这些函数的调用使用条件编译,还要对函数定义本身使用条件编译。