gpt4 book ai didi

c - 使用 ## 的 token 连接给出 "not a valid preprocessing token"

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:40 24 4
gpt4 key购买 nike

以下代码报错:

“粘贴“f32_Q31”和“(”不提供有效的预处理标记”

#define INIT_Q(N, name, val) \
name.value = f32_Q##N##(val);

#define f32_Q31(x) f32_Q(31,x)
INIT_Q31(name, val) INIT_Q(31, name, val)
INIT_Q25(name, val) INIT_Q(25, name, val)

这可以修复吗?

最佳答案

因为 f32_Q31( 不是单个标记,而是两个标记。( 本身就是一个标记。连接的结果必须是 单个标记 有效 token 。

如果您打算用另一个宏的扩展来初始化 name.value,则可以执行以下操作:

#define INIT_Q(N, name, val) \
name.value = f32_Q##N(val);

宏名称必须是有效的标记,而不是整个表达式。


正如 Sander De Dycker 所指出的,您似乎还省略了最后两个宏定义中的 define:

#define INIT_Q31(name, val)     INIT_Q(31, name, val)
#define INIT_Q25(name, val) INIT_Q(25, name, val)

关于c - 使用 ## 的 token 连接给出 "not a valid preprocessing token",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41998931/

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