#define的困惑使用
近来帮别人看了一些C语言应用方面的代码,有如下的定义
CARSUB.h 文件中
...
#ifdef CARSUB_GLOBALS
#define CARSUB_EXT
#else
#define CARSUB_EXT extern
#endif
...
CARSUB_EXT int g_nADFlag;
...
////////////////////////////////////////////////////////////
CARSUB.C 文件中
....
#define CARSUB_GLOBALS 1
#include "CARSUB.H"
...
/////////////////////////////////////////////////////////////
在CARSUB.c文件中对CARSUB_GLOBALS做了定义,那么在上面的CARSUB.h文件中那段红色的声明代码还有意义么?
望解释一下哈!
[解决办法]
有CARSUB_GLOBALS存在的情况下,CARSUB_EXT不起任何作用
其他情况CARSUB_EXT代表extern
你不能保证在其他的代码中一直有CARSUB_GLOBALS
[解决办法]
没有。
[解决办法]
没有作用。具体的可以查看预处理文件。在VS平台下:项目---属性----配置属性---C/C++----预处理器---生成预处理文件
[解决办法]
一般在实际应用中可能会遇到不同的情况,所以这时候就会用宏来进行分割,上面说的这种情况,红色代码没有作用,但是如果需要它起作用的时候,那么去修改代码就不方便,所以就用宏分割
[解决办法]
4楼正解,CARSUB.h头文件可能还要在其他文件中使用,而且也方便修改代码
[解决办法]