我在C程序中定义了以下宏:

#define ISE1  "cust_add"
#define ISE2  "cust_sub"

#define ise_inst(inst, a, b, c) \
asm volatile (
" " inst " %1, %2, %0          \n\t" \
: "=r" (c) \
: "r" (a), "r" (b) \
: "%g0" \
)

在主例程中,我使用以下参数调用宏:
ise_inst(ISE1, inp1, inp2, res);

理想情况下,预处理器应该扩展整个过程,以便得到以下结果:
asm volatile (
" cust_add %1, %2, %0          \n\t"
: "=r" (res)
: "r" (inp1), "r" (inp2)
: "%g0"
);

有人知道我做错了什么吗?现在预处理器告诉我
错误:字符串常量之前的分析错误(@line:“”inst“%1、%2、%0\n\t”)

最佳答案

似乎您在\行后面缺少一个asm volatile(行继续字符。

关于c - C预处理器 token 替换失败并出现解析错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4863951/

10-11 15:16