Lyn*_*ite 24 c avr avr-studio4 winavr avr-gcc
我必须存储指令,我将通过串口接收命令.命令长度为8位.
我需要保持命令名称及其值之间的透明度.这样可以避免将串行接收的8位数转换为任何类型.
我想在我的代码中使用Enumerations来处理它们.只有枚举对应于此平台上的16位整数.
该平台是AVR ATmega169V微控制器,位于Butterfly演示板上.它是一个8位系统,对16位操作提供一些有限的支持.它不是一个快速的系统,有大约1KB的RAM.它没有像文件I/O或操作系统那样的任何奢侈品.
那么关于我应该用什么类型来存储8位命令的任何建议呢?
必须有比#defines的大量标题更好的东西.
您正在尝试解决不存在的问题.
您的问题被标记为C.在C语言中,值上下文中的枚举类型与整数类型完全兼容,其行为与其他整数类型一样.在表达式中使用时,它们与其他整数类型完全相同.一旦考虑到这一点,你应该意识到如果你想用8位整数类型存储枚举常量描述的值,你所要做的就是选择一个合适的通用8位整数类型(比如说int8_t)并使用它而不是枚举类型.通过将枚举常量值存储在类型的对象中int8_t(与使用枚举类型显式声明的对象相反),您绝对不会失去任何东西.
您描述的问题将存在于C++中,其中枚举类型与其他整数类型分开得更远.在C++中,为了节省内存而使用整数类型代替枚举类型更加困难(尽管可能).但不是在C中,它不需要任何额外的努力.