Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用“gives”的令牌连接;不是有效的预处理令牌";_C - Fatal编程技术网

C 使用“gives”的令牌连接;不是有效的预处理令牌";

C 使用“gives”的令牌连接;不是有效的预处理令牌";,c,C,以下代码给出了错误信息: 粘贴“f32_Q31”和“(”不会提供有效的预处理令牌” 这可以解决吗?因为f32\u Q31(不是一个令牌,而是两个令牌。(本身就是一个令牌。连接的结果必须是一个有效令牌 如果您的目的是通过扩展另一个宏来初始化name.value,则可以执行以下操作: #define INIT_Q(N, name, val) \ name.value = f32_Q##N(val); 宏名称必须是有效标记,而不是整个表达式 正如Sander De Dycker指出的,您似

以下代码给出了错误信息:

粘贴“f32_Q31”和“(”不会提供有效的预处理令牌”

这可以解决吗?

因为
f32\u Q31(
不是一个令牌,而是两个令牌。
本身就是一个令牌。连接的结果必须是一个有效令牌

如果您的目的是通过扩展另一个宏来初始化
name.value
,则可以执行以下操作:

#define INIT_Q(N, name, val) \
    name.value = f32_Q##N(val);
宏名称必须是有效标记,而不是整个表达式


正如Sander De Dycker指出的,您似乎还忽略了上两个宏定义中的
定义

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

你是说
name.value=f32_Q##N(val)
?上面的版本对我来说没有多大意义。更改了,请参见下文。@Danijel:你似乎忘记了在最后两行开头定义
。@Sanderedycker解决了这个问题,谢谢。更改了。现在它指向INIT_Q31(并说:“('token.”@Danijel之前需要构造函数、析构函数或类型转换-当您的代码简化为上述问题时,它就解决了()。如果您有其他问题,则与您显示的或与我的修复建议相关的内容无关。修复只允许编译器偶然发现下一个问题。@Danijel您的C编译器知道构造函数和析构函数吗?这很不寻常。也许您使用的是另一种名称包含大写字母C的语言?我是usiNG C++编译器(MIWW G+),是的。@海伦芬(1)标记你的问题C++,而不是C(2)考虑不使用C++中的宏。
#define INIT_Q31(name, val)     INIT_Q(31, name, val)
#define INIT_Q25(name, val)     INIT_Q(25, name, val)