没有替代东西,它就是空,就是没有东西。例如
#ifdef negative
#define sign -
#else
#define sign
int a = sign 3;
在这个例子中,如果negative已经定义,那么a就等于-3,否则,a就等于3。明白了吗?
至于头文件中的
#ifndef abc
#define abc
.....
#endif
这是为了防止头文件被多次包含造成redefination错误。它的值是无所谓的,只是一个标志。
#ifdef negative
#define sign -
#else
#define sign
int a = sign 3;
在这个例子中,如果negative已经定义,那么a就等于-3,否则,a就等于3。明白了吗?
至于头文件中的
#ifndef abc
#define abc
.....
#endif
这是为了防止头文件被多次包含造成redefination错误。它的值是无所谓的,只是一个标志。
ifndef abc
#define abcint m;
int n;m= abc n;有什么用???
//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
在a.cpp中有效,为什么在b.cpp中也有效。我指的是_MY_HEADER 在 a.cpp中定义后,
我认为在b.cpp中判断时,仍应判断为没有定义。a.cpp中的定义不会影响b.cpp.
不知我说的对不对?请各位高手指点迷经。
谢谢