5

正如标题所述,我想知道使用之间有什么区别

#if
   DoWork();
#else
   DoAnotherWork();
#endif

if (debug)
   DoWork();
else
   DoAnotherWork();
4

3 回答 3

11
if (debug)
    DoWork();
else
    DoAnotherWork();

上面的代码将被编译并在运行时检查条件。

#if
    DoWork();
#else
    DoAnotherWork();
#endif

这些语句将在编译时检查。

所以如果#if条件为真,DoWork(); 将被编译,否则 DoAnotherWork(); 将被编译。与前面的示例一样,包括 if 语句在内的所有代码都将被编译。

请阅读预处理器指令

预处理器指令

于 2013-02-23T00:07:14.137 回答
9

第一个是预处理器指令,第二个是逻辑语句

于 2013-02-23T00:04:46.190 回答
6

第一个版本使用预处理器指令。这些是编译器本身只编译某些语句的指令。生成的可执行文件将仅包含已编译的语句。因此,条件必须是可以在编译时评估的东西。

第二个版本在运行时进行评估。编译器将编译所有语句以及评估if条件的逻辑。所有语句都将包含在生成的可执行文件中。实际执行的语句将在您的代码运行时确定。

于 2013-02-23T00:06:45.710 回答