使用宏检查宏名称的预先存在

时间:2013-03-31 06:21:46

标签: c macros c-preprocessor directive

我编写了一个带有几个包含数十个宏的头文件(.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

你知道其他(更好)的方法吗?

1 个答案:

答案 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