首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

#define的困惑使用解决办法

2012-05-22 
#define的困惑使用近来帮别人看了一些C语言应用方面的代码,有如下的定义CARSUB.h 文件中...#ifdef CARSUB_

#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头文件可能还要在其他文件中使用,而且也方便修改代码
[解决办法]

探讨

一般在实际应用中可能会遇到不同的情况,所以这时候就会用宏来进行分割,上面说的这种情况,红色代码没有作用,但是如果需要它起作用的时候,那么去修改代码就不方便,所以就用宏分割

热点排行