请高手赐教c语言预处理指令的#define的一个问题。
各位高手,实在不得已问一下,我找遍了资料也没找到。 在uc/osII中,有这么一句#define OS_CPU_GLOBALS。 还有在uc/osII的OS_CPU.H中有:<br />#ifdef OS_CPU_GLOBALS<br />#define OS_CPU_EXT<br />#else<br />#define OS_CPU_EXT extern<br />#endif<br />#define 为什么只有一个参数?只有一个参数何意?请赐教,小弟不胜感激。定义为空
呵呵
#ifdef OS_CPU_GLOBALS<br />#define OS_CPU_EXT<br />#else<br />#define OS_CPU_EXT extern<br />#endif<br /><br />说这个还要从开始用这个说起,比较罗嗦。<br /><br />如我现在有A.C,B.C,A.H三个文件<br />在A.H中有定义:<br />#ifdef OS_CPU_GLOBALS<br />#define OS_CPU_EXT<br />#else<br />#define OS_CPU_EXT extern<br />#endif<br /><br />OS_CPU_EXT int a;<br /><br />现在A.c中使用:<br />#define OS_CPU_GLOBALS<br />#include A.H<br /> a=1;<br /><br />如果在B.c中使用:<br />#include A.H<br />则也可以直接使用 a=2;<br /><br />这样用起来很方便,每次加上#include A.H后就可以直接使用A.H所有变量<br /><br />如果还有不明,请仔细想想再来聊,呵呵<br />仔细想想不难
这样设计的好处是,一个项目的诸多*.c文件共用一个*.h文件,让文档结构清晰,不过唯一的坏处是增加了编译器编译时间。主要用于变量声明
为了
为了不重复包函文件或变量对吧多谢db10
多谢多谢,看明白了!多谢各位帮忙!
页:
[1]