点击" ## - 运算符不会在定义中组成标记"使用 coan 和宏定义如下:
#define MY_STRINGIFY_CONCAT_MACRO(_x) \
a = #_x; \
b = #_x; \
c = prefix_ ## _x;
......从编译器的角度来看,这是完全有效的。
将此代码放在x.c中,然后
$ coan source -gw x.c
coan: /home/andreasl/c/onion/no_ear/x.c: line 4: error 0x0081b: ##-operator does not compose a token in definition >>a = #_x; b = #_x; c = prefix_ ## _x;<< of "MY_STRINGIFY_CONCAT_MACRO(_x)"
(对于那些有兴趣调试它的人:如果省略第一个或第二个字符串化,它就不会发生。)
我不希望很快就能解决这个问题,我想知道是否有一些(未记录的)方式来标记我的代码的某些部分是否被忽略&#39; (因此通过coan传递&#39;),例如一些特别的
#ifndef COAN_PLEASE_ACCEPT_AND_LEAVE_AS_IS
...
#endif
...我可以用?
附上这样的代码或任何其他想法如何优雅地处理这个? (我目前正在编写额外的代码,允许我省略两个字符串中的一个。)
> coan --version
coan, version 6.0.1 for 64 bit Unix/Linux(built Sep 15 2014,18:42:46)