gpt4 book ai didi

c - GCC 预编译器宏 ## ,与另一个宏的标记连接

转载 作者:行者123 更新时间:2023-11-30 19:06:27 28 4
gpt4 key购买 nike

正如您所看到的,连接 token 是有效的,
也是另一个宏的 token ,
但是当 token 是宏时它似乎不起作用?

longNameForaFunction_one(){return 1;}
longNameForaFunction_two(){return 2;}
longNameForaFunction_third(){return 3;}
two(){return 2;}
#define bar two
#define foo(x)(longNameForaFunction_##x())
#define three third
main(){
printf("%d\n",foo(one)); // 1

printf("%d\n",foo(two)); // 2

printf("%d\n",bar()); // 2

// printf("%d\n",foo(three)); // this doesn't work
}

如果取消注释,最后一行会出现此错误;

undefined reference to `longNameForaFunction_three'

#define three third

好像没有效果

Try it online

最佳答案

这就是为什么您需要在它起作用之前提供另一个级别 - 宏参数将在传递给 foo 之前扩展。

#define foo(x)(longNameForaFunction_##x())
#define foo1(x) foo(x)
#define three third

..

printf("%d\n",foo1(three));

关于c - GCC 预编译器宏 ## ,与另一个宏的标记连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031338/

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