C语言中define的问题

2025-03-03 06:03:06
推荐回答(2个)
回答1:

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

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

这种做法的目的在于防止EXTERN重定义,比如你在另外一个文件中定义过了EXTERN的话,你不做#undef的操作,直接在现在这个文件中#define EXTERN是错误的做法,因为编译器不知道该用哪个宏定义。

回答2:

如果 定义了GLOBAL_VARIABLES_HERE
#undef 取消以前的 宏定义

#define EXTERN 重新定义为空

你过你没定义GLOBAL_VARIABLES_HERE
他 不还是以前的 宏定义吗