我想在使用imagecraft編譯器avr的程序集中做一些預處理。到目前爲止,我最好的猜測是這樣的:使用在程序集中定義
#define TEST 1
#if TEST == 1
ldi R20, 0xFF
#else
ldi R20, 0xF1
#endif
但是這樣做使編譯器錯誤:
absolute expression expected
如何解決這個還是有更好的方法來做到這一點?
肯尼斯
我想在使用imagecraft編譯器avr的程序集中做一些預處理。到目前爲止,我最好的猜測是這樣的:使用在程序集中定義
#define TEST 1
#if TEST == 1
ldi R20, 0xFF
#else
ldi R20, 0xF1
#endif
但是這樣做使編譯器錯誤:
absolute expression expected
如何解決這個還是有更好的方法來做到這一點?
肯尼斯
創建這樣一個答案:
一些挖後,我已經找到了正確的解決方案。 Appearently ICCAVR保留.DEFINE derective申報別名到寄存器,所以如果上述實際解析爲
.if R1 == 1
,其生成錯誤消息
。解決方案是使用以下語法聲明符號常數而不是定義:
TEST = 1
然後它按預期工作。
哦,好的。我只是不希望它看起來像我發佈了一個虛假的問題。 – Kenneth
只要涉及主題,發佈「假」問題其實都可以。這是一種增加知識並幫助他人解決同樣問題的方法。 –
爲了在信貸到期時給予貸款,上面的全部答案是Kenneths,逐字! –
嘗試'ldi R20,$ FF'而不是'ldi R20,0xFF'? –
編輯出你的問題的答案,然後將其添加爲一個正確的答案! – Skizz