你的理解是不对的,
#ifdef GLOBAL_VARIABLES_HERE
#undef EXTERN
#define EXTERN
#endif
应该这样理解:
如果定义了GLOBAL_VARIABLES_HERE
不管EXTERN是否定义过,都取消他之前的定义
重新定义EXTERN
这种做法的目的在于防止EXTERN重定义,比如你在另外一个文件中定义过了EXTERN的话,你不做#undef的操作,直接在现在这个文件中#define EXTERN是错误的做法,因为编译器不知道该用哪个宏定义。
如果 定义了GLOBAL_VARIABLES_HERE
#undef 取消以前的 宏定义
#define EXTERN 重新定义为空
你过你没定义GLOBAL_VARIABLES_HERE
他 不还是以前的 宏定义吗