gpt4 book ai didi

带有空字符串的 c 标记粘贴(连接)

转载 作者:行者123 更新时间:2023-12-01 23:42:05 25 4
gpt4 key购买 nike

我正在尝试为 C 代码使用宏。但是,我坚持使用 token 连接

我有以下变量。

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);

但是,在这种情况下,我需要多写几行。就我而言,它会导致更多代码。

我在谷歌上搜索了很多,但我无法解决。有没有人知道如何用空字符串标记粘贴?

谢谢

最佳答案

传递一个空参数,它将有效地将任何内容与 A 连接起来,只生成 A:

#define CALL_FUNCTION(GROUP) \
FUNCTION(GROUP##A);

CALL_FUNCTION() // expands to FUNCTION(A);
CALL_FUNCTION(a) // expands to FUNCTION(aA);

您可以 see this work live .

需要注意的是,当您调用 CALL_FUNCTION() 时,您不会像处理函数那样传递零参数。相反,您传递一个参数 - 空。同样,MACRO(,) 使用两个空参数调用 MACRO。恰好与 empty 的串联行为正是您想要的。

关于带有空字符串的 c 标记粘贴(连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com