我想在使用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