我编写了一个带有几个包含数十个宏的头文件(.h)。在每个宏之前我编写了这个:
#if defined (MACRO_NAME)
#warning "Macro name MACRO_NAME is already in use. Please rename the macro"
#endif
有一个宏来完成所有检查工作以提高代码的可读性,这将是很棒的。但宏中不允许使用指令。
我想要那样的东西:
#define CHECK_MACRO_NAME(MACRO_NAME) \
#if defined (MACRO_NAME) \
#warning "Macro name "MACRO_NAME" is already in use. Please rename the macro" \
#endif
你知道其他(更好)的方法吗?
答案 0 :(得分:5)
更好的方法可能就是让编译器进行检查。
/* test.c */
#define MACRO
#define MACRO 1
使用gcc
进行编译:
$ gcc -c test.c
test.c:3:0: warning: "MACRO" redefined [enabled by default]
test.c:1:0: note: this is the location of the previous definition