C语言宏/预编译嵌套问题
因现在手上有个项目,里面的宏定义嵌套的特多繁琐。经常为了查看某个宏是否有定义,需要查找好多地方。于是想直接打印出来某个宏是否有定义过,如下:
-----------------
#ifdef MACRO |
puts("MACRO has defined"); |
#else |
puts("MACRO has not defined"); |
#endif |
-----------------
但是每次都要写这么多 1 2 3 4 5 行代码,觉得不爽,就像写个宏来实现这5行代码(就是用一个宏来实现这5行代码的意思)。大致想法如下:(当然下面这段代码是完全错误的,不然我也不用来这里求助了)
------------------------------------
#define CHAN(x) #ifdef x \
puts("has defined"); \
#else \
puts("has not defined"); \
#endif
CHAN(MARCO)
------------------------------------
呵呵,麻烦哪位大侠能指点一下,这样的宏应该怎么写呢?
[解决办法]
#pragma message( messagestring )
[解决办法]
- C/C++ code
#ifdef MACRO#error macro defined#endif
[解决办法]
应该没有办法,
因为2遍编译。第一遍gcc -E 会替代形成一个解析所有宏的C文件,第二遍就不去解析了,所以#预定义不能嵌套吧。
具体忘记了,看看GCC manual吧,有关预定义的那部分。