gpt4 book ai didi

c - C 中的 token 粘贴不清楚

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:11 26 4
gpt4 key购买 nike

#include <stdio.h>

#define tokenpaster(n) printf ("token" #n " = %d", token##n)

int main(void)
{
int token34 = 40;

tokenpaster(34);
return 0;
}

The output is :

token34 = 40

作者说:

它是怎么发生的,因为这个例子导致了预处理器的以下实际输出:

printf ("token34 = %d", token34);

token##n 是如何转换成 token34 的?不应该是token#34吗?

最佳答案

预处理器语句中的双哈希将两个参数粘合在一起。所以 token##n 变成了 token##34 变成了 token34。单个散列将其参数字符串化。所以 #n 变成了 "34"。于是整个宏展开如下:

tokenparser(34);
->
printf ("token" #n " = %d", token##n);
->
printf ("token" "34" " = %d", token##34);
->
printf ("token" "34" " = %d", token34);

编译器连接格式字符串,所以最终结果是:

printf ("token34 = %d", token34);

关于c - C 中的 token 粘贴不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043910/

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