ice_fire_love 发表于 2014-4-3 23:33:00

CodeVisionAVR编译错误

Error: D:\AVRproject\2014\test\dete.h(28), included from: dete.c: too many global/static 'bit' variables
Error: D:\AVRproject\2014\test\global.h(61), included from: errordisplay.c: too many global/static 'bit' variables

这样的十几个错误都说bit变量太多

怎么回事啊?

ice_fire_love 发表于 2014-4-3 23:39:23

我定义的extern bit变量

slzm40 发表于 2014-4-4 08:16:09

AVR能用bit定义???? 我记得在AVR中没有位定义啊。一般都用位域……你用的是位域么

ice_fire_love 发表于 2014-4-4 17:38:20

不是吧,我看的别人的程序。extern bit 变量名, 我用的是CodevisionAVR编译器啊

ice_fire_love 发表于 2014-4-6 16:54:40

本帖最后由 ice_fire_love 于 2014-4-6 17:36 编辑

问题找到了{:biggrin:} 。把编译设置里的Bit Variables size改为40就好了,之前默认的16.
于是,新的问题出现了:为什么在cvavr这个编译器里要把bit变量的size设置成40以上而不是16呢?{:dizzy:}

ice_fire_love 发表于 2014-4-6 17:39:32

slzm40 发表于 2014-4-4 08:16
AVR能用bit定义???? 我记得在AVR中没有位定义啊。一般都用位域……你用的是位域么 ...

AVR里的确没有bit定义,不过编译器里有选项也可以设置它,程序里这么写,实际上是假的。

ice_fire_love 发表于 2014-4-6 17:51:53

本帖最后由 ice_fire_love 于 2014-4-6 17:57 编辑

啊,又解决了{:biggrin:}在cvAVR里
位变量是存储在寄存器R2到R15的特殊全局变量,用关键字bit声明。
根据声明的顺序,位变量的分配从R2的bit 0开始,然后bit 1,等等,按升序排列。最多可声明112个位变量。
给位变量分配的空间可以在Project|Configure|C Compiler|Compilation|Bit Variables Size 指定。
如果位变量没有赋初值,在程序开始时会自动赋值为0。
在表达式赋值中位变量自动转变为无符号字符型。

所以,刚才是我误解了size的意思

页: [1]
查看完整版本: CodeVisionAVR编译错误