2011-09-19 47 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,逐字! –

相关问题