2

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

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

4

1 回答 1

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
于 2013-03-31T06:30:13.803 回答