以下代码给出了错误:
"粘贴" 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)
这可以修复吗?
答案 0 :(得分:3)
因为$data['image'] = file_get_contents($_FILES['image']['tmp_name']);
不是单个令牌,而是两个令牌。 f32_Q31(
本身就是一个标记。连接的结果必须是单个有效令牌。
如果您的意图是使用另一个宏的扩展来初始化(
,则以下内容将执行:
name.value
宏名称必须是有效的标记,而不是整个表达式。
正如 Sander De Dycker 指出的那样,您似乎也省略了前两个宏定义中的#define INIT_Q(N, name, val) \
name.value = f32_Q##N(val);
:
define