Ric*_*Bou 2 c macros directive c-preprocessor
我编写了一个包含几个包含数十个宏的头文件(.h).在每个宏之前我编写了这个:
#if defined (MACRO_NAME)
#warning "Macro name MACRO_NAME is already in use. Please rename the macro"
#endif
Run Code Online (Sandbox Code Playgroud)
为了提高代码的可读性,有一个宏可以完成所有检查工作,这将是很棒的,但宏内部不允许使用指令.
我想要这样的东西:
#define CHECK_MACRO_NAME(MACRO_NAME) \
#if defined (MACRO_NAME) \
#warning "Macro name "MACRO_NAME" is already in use. Please rename the macro" \
#endif
Run Code Online (Sandbox Code Playgroud)
你知道其他(更好)的方式吗?
更好的方法可能是让编译器进行检查.
/* test.c */
#define MACRO
#define MACRO 1
Run Code Online (Sandbox Code Playgroud)
编译使用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
Run Code Online (Sandbox Code Playgroud)