我在Ç程序中定义的以下宏: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"
);
任何一个想法,我做错了什么?目前预处理器告诉我
error: parse error before string constant (@ line: " " inst " %1, %2, %0 \n\t")
您可能会考虑修改问题以类似“C预处理程序标记替换失败,并分析错误”。这个问题:“预处理器更换”听起来像是你要替换的预处理器 - 我敢肯定,我已经看到在过去几周内这样的问题。 – 2011-02-01 14:55:15