C语言中define的问题

#ifdef GLOBAL_VARIABLES_HERE
#undef EXTERN
#define EXTERN
#endif

按我的理解,上面的意思就是如果定义了GLOBAL_VARIABLES_HERE,那么就不定义EXTERN,否则就把EXTERN定义为空,对不对?不定义不就是定义为空吗?岂不就是相当于不写EXTERN?那还定义干嘛

你的理解是不对的,
#ifdef GLOBAL_VARIABLES_HERE
#undef EXTERN
#define EXTERN
#endif

应该这样理解:
如果定义了GLOBAL_VARIABLES_HERE
不管EXTERN是否定义过,都取消他之前的定义
重新定义EXTERN

这种做法的目的在于防止EXTERN重定义,比如你在另外一个文件中定义过了EXTERN的话,你不做#undef的操作,直接在现在这个文件中#define EXTERN是错误的做法,因为编译器不知道该用哪个宏定义。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-02
如果 定义了GLOBAL_VARIABLES_HERE
#undef 取消以前的 宏定义

#define EXTERN 重新定义为空

你过你没定义GLOBAL_VARIABLES_HERE
他 不还是以前的 宏定义吗
相似回答