2011-09-19 24 views
3

我想在使用imagecraft編譯器avr的程序集中做一些預處理。到目前爲止,我最好的猜測是這樣的:使用在程序集中定義

#define TEST 1 
#if TEST == 1 
ldi R20, 0xFF 
#else 
ldi R20, 0xF1 
#endif 

但是這樣做使編譯器錯誤:

absolute expression expected 

如何解決這個還是有更好的方法來做到這一點?

肯尼斯

+0

嘗試'ldi R20,$ FF'而不是'ldi R20,0xFF'? –

+2

編輯出你的問題的答案,然後將其添加爲一個正確的答案! – Skizz

回答

1

創建這樣一個答案:

一些挖後,我已經找到了正確的解決方案。 Appearently ICCAVR保留.DEFINE derective申報別名到寄存器,所以如果上述實際解析爲

.if R1 == 1 
,其生成錯誤消息

。解決方案是使用以下語法聲明符號常數而不是定義:

TEST = 1 

然後它按預期工作。

+0

哦,好的。我只是不希望它看起來像我發佈了一個虛假的問題。 – Kenneth

+0

只要涉及主題,發佈「假」問題其實都可以。這是一種增加知識並幫助他人解決同樣問題的方法。 –

+0

爲了在信貸到期時給予貸款,上面的全部答案是Kenneths,逐字! –

相關問題