【发布时间】:2016-05-10 19:46:09
【问题描述】:
我正在尝试将宏用于 c 代码。 但是,我坚持使用令牌连接
我有以下变量。
A, aA, bA, cA ...
而且,所有这些变量都用于同一个函数(情况有点复杂,所以仅仅传递变量是不够的)。
如果我只有
aA, bA, cA
然后,我可以使用下面的宏。
#define CALL_FUNCTION(GROUP) \
FUNCTION(GROUP##A);
但是,因为
A
我不能再使用上面提到的宏了。 我试过了,
#define CALL_FUNCTION(GROUP) \
FUNCTION(GROUP##A);
FUNCTION(NULL);
FUNCTION(a);
FUNCTION(b);
FUNCTION(c);
但实际上,NULL 不是空字符串,它不起作用。
FUNCTION("");
也没有用。
还有其他方法,例如,
#define CALL_FUNCTION(GROUP) \
if(GROUP == NULL)\
FUNCTION(A);\
else\
FUNCTION(GROUP##A);
但是,在这种情况下,我需要多写几行。 就我而言,它会导致更多代码。
我用谷歌搜索了很多,但我无法解决。 有谁知道如何用空字符串标记粘贴?
谢谢
【问题讨论】:
标签: c macros concatenation token