求教 有关 预编译的 问题!
本帖最后由 zhan2905 于 2013-4-22 11:05 编辑#ifndef __Can_BUS_H__ ------------------------------1
#define __Can_BUS_H__-------------------------------2
#undefEXTERN -------------------------------- 3
#ifndef __Can_BUS_C__ --------------------------------4
#define EXTERN extern--------------------------------5
#else --------------------------------6
#define EXTERN --------------------------------7
#endif --------------------------------8
#define
...
内容
...
#undef__Can_BUS_C__
#endif
我的问题是 在 第七行
#defineEXTERN
怎么就只有EXTERN 后面要替换的东西呢 ?
接着我就 这样搞了下第七行 我改成
#defineEXTERN extern 跟第五行一样
编译一下 出现了 警告
然后我把他屏蔽掉结果出现了 错误
求解 本帖最后由 绿茶山人 于 2013-4-22 14:24 编辑
#ifndef __Can_BUS_C__ --------------------------------4
#define EXTERN extern--------------------------------5
#else --------------------------------6
#define EXTERN --------------------------------7
第五行和第七行任何时候只有其中一行是有效的。第七行那样定义是表示你有EXTERN 这个宏,其他程序可能有#ifndef EXTERN 或者#ifdef EXTERN这样的条件编译,其次为了代码的一致性,例如在一个.c文件中有这样一句代码 EXTERN char idata temp; 如果你定义了第七句,根据条件编译的不同结果,这句代码可以是extern char idata temp;或者是char idata temp;这样的好处是你不用去修改改.c文件. 哦~~ 其实第七行就是定义一个 空的
他的目的是 给 下文或其他.c文件 中的 #ifndef 和 #ifdef做一个 对应的
这也是预编译 的一个优势之处
页:
[1]