没有替代东西,它就是空,就是没有东西。例如
#ifdef negative
#define sign -
#else 
#define sign
int a = sign 3;
在这个例子中,如果negative已经定义,那么a就等于-3,否则,a就等于3。明白了吗?
至于头文件中的
#ifndef abc
#define abc
.....
#endif
这是为了防止头文件被多次包含造成redefination错误。它的值是无所谓的,只是一个标志。

解决方案 »

  1.   

    我还是有点不明白,
    ifndef abc
    #define abcint m;
    int n;m= abc n;有什么用???
      

  2.   

    举个例子来说
    //myheader.h
    #ifndef _MY_HEADER
    #define _MY_HEADER
    ....
    int aaaa;
    #endif//a.cpp
    #include "myheader.h"
    ....
    //b.cpp
    #include "myheader.h"
    现在假设编译程序先处理a.cpp,它包含myheader.h时,发现_MY_HEADER没有被定义,于是#define _MY_HEADER,后来处理b.cpp,它包含myheader.h时,此时_MY_HEADER已经被定义。于是变量aaaa不会被重新定义。所以,_MY_HEADER的值是不重要的,因为后面不会用到它。
    #ifndef意思就是if not defined
      

  3.   

    谢谢 bigjim   (有您的20分了)   小弟我明白了。但还有一个关于 bigjim 举的例子 的问题?#define _MY_HEADER  所定义的_MY_HEADER 
    在a.cpp中有效,为什么在b.cpp中也有效。我指的是_MY_HEADER 在 a.cpp中定义后,
    我认为在b.cpp中判断时,仍应判断为没有定义。a.cpp中的定义不会影响b.cpp.        
    不知我说的对不对?请各位高手指点迷经。
                           谢谢
      

  4.   

    宏定义是全局的。从#define开始,直到文件结束或者遇到#undef