正如标题所述,我想知道使用之间有什么区别
#if
DoWork();
#else
DoAnotherWork();
#endif
和
if (debug)
DoWork();
else
DoAnotherWork();
if (debug)
DoWork();
else
DoAnotherWork();
上面的代码将被编译并在运行时检查条件。
#if
DoWork();
#else
DoAnotherWork();
#endif
这些语句将在编译时检查。
所以如果#if条件为真,DoWork(); 将被编译,否则 DoAnotherWork(); 将被编译。与前面的示例一样,包括 if 语句在内的所有代码都将被编译。
请阅读预处理器指令
第一个版本使用预处理器指令。这些是编译器本身只编译某些语句的指令。生成的可执行文件将仅包含已编译的语句。因此,条件必须是可以在编译时评估的东西。
第二个版本在运行时进行评估。编译器将编译所有语句以及评估if
条件的逻辑。所有语句都将包含在生成的可执行文件中。实际执行的语句将在您的代码运行时确定。