我在Ç程序中定義的以下宏: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