【发布时间】:2011-02-01 14:46:44
【问题描述】:
我在 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" )
【问题讨论】:
-
您可能会考虑将问题更改为“C 预处理器令牌替换失败并出现解析错误”之类的问题。 “预处理器更换”这个问题听起来像是你想更换预处理器——我很确定我在过去几周内看到过类似的问题。
标签: c assembly c-preprocessor inline-assembly