#if和普通的if有什么区别啊。msdn上说的一大堆,就是没看懂。有谁能简单地说一下么?

解决方案 »

  1.   

    #if ...
    #else
    ...
    #endif//与#if对应
    作为一个编译“开关”,比如:
    #if(条件满足)
    执行代码1
    #else
    执行代码2
    #endif
    假如编译时,确实满足条件,则生成的程序文件(.exe文件)中不会有执行代码2的。如果用普通if语句,生成的程序文件就会有执行代码2,这个区别看看生成文件大小就可以知道。如果你的条件在程序编译前就已经确定了,那就用#if;如果条件需要在程序运行过程中才能判断,则用if。
    以上这些就是我的理解,说的不规范,希望对搂住有所帮助。
      

  2.   

    谢谢楼上的兄弟。#ifdef _DEBUG
    ...这里应该表示如果是在DEBUG模式下要执行下列代码。那么宏_DEBUG是在哪里定义的呢?如果写成
    #if _DEBUG可不可以?
      

  3.   

    #ifdef跟#if是不一样的~~
    你到project settings里面,选择win32 debug,选择c/c++页面,在preprocessor definitions里面就能看到_DEBUG了
      

  4.   

    谢谢楼上的朋友。但我还是有点不明白。preprocessor definitions里的宏是在什么时候定义的啊。
    而且既然在project setting的preprocessor definitions里面已经定义了_DEBUG,那么#ifdef _DEBUG不是始终为TRUE了么?如果我在Release模式下batch build一把,_DEBUG这个宏还存在么?
      

  5.   

    在Realease里 _DEBUG 定义为 FALSE