不能将值 120 分配给静态常量无符号字符或将值 200 分配给常量静态无符号 int
Can't assign value of 120 to static const unsigned char or value of 200 to const static unsigned int
我对Arduino之外的嵌入式c++还很陌生,但到目前为止,我已经能够解决我遇到的所有问题,除了这个问题。我在Atmega 1284P上使用Atmel Studio,使用C++进行编码。我使用以下变量与TTL串行输入进行比较(串行输入在0和255之间,以单个无符号字符字节传输):
const unsigned char STEER_DEADZONE_MIN = 120;
const unsigned char STEER_DEADZONE_MAX = 120;
const unsigned char THROTTLE_DEADZONE_MIN = 136;
const unsigned char THROTTLE_DEADZONE_MAX = 136;
当我尝试使用STEER_DEADZONE_MIN或任何列出的无符号字符时,它们显示为12。我已经确认,我的程序使用Atmel Studio模拟器手表工具并将其打印到嵌入式设备的LCD上,将其视为12。实际上,我已经为无符号字符提出了一个修复方案,即删除const,但我有const是有原因的,因为我不想更改值。声明为:
unsigned char TEST = 120;
unsigned char TEST1 = 136;
这导致该值正确地为120或136,但随后该值可能会意外更改。看起来,如果我在主循环中执行以下任务:
const unsigned char TEST = 120;
这也修复了值,但引入了其他问题,从那时起,我的任何功能都无法访问它
当涉及到const unsigned int时,我也遇到了一个看似相关的问题。当我在主循环之外声明它时:
const unsigned int SERVO_ESC_SPEED = 200;
const unsigned int SERVO_STEER_SPEED = 200;
const unsigned int SERVO_DISTANCE_SENSOR_SPEED = 200;
值为37900,但是,我已经尝试在我的主循环中将其声明为:
const unsigned int TEST = 200;
这会更正该值,但如上所述,这并没有帮助,因为我的函数不再可以访问它。在这种情况下,在主循环之外删除const并不能修复该值。在这一点上我真的不知所措。在这一点上,我唯一能想到的另一件事就是用所有这些常量变量创建一个设置类,看看是否能纠正这些值。我会尝试下一步,并更新结果。
让它们也是静态的怎么样?
static const unsigned char STEER_DEADZONE_MIN = 120;
static const unsigned char STEER_DEADZONE_MAX = 120;
static const unsigned char THROTTLE_DEADZONE_MIN = 136;
static const unsigned char THROTTLE_DEADZONE_MAX = 136;
相关文章:
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 如何将常量字符*转换为常量无符号字符*
- 是否有理由对非负常量使用无符号类型?
- 尝试将常量字符 [] static_cast<>为无符号字符 * 时出错
- 如何将常量无效*转换为无符号字符*
- 缩小从"int"(常量表达式)到"无符号int"的转换 - MSVC vs gc
- 错误:无法从"元组<[...]、std::__1::元组<无符号长长、无符号长长>>"到"常量元组<[...],uint_type>"的可行转换
- 不能将值 120 分配给静态常量无符号字符或将值 200 分配给常量静态无符号 int
- 如何将无符号字符 * 的内容转换为常量字符 *
- 如何获取"静态常量无符号字符my_var[]"的长度
- 如何将常量标准::矢量<无符号字符>转换为字符
- 转换常量无符号字符无效
- 不允许从"常量无符号字符*常量*"到"常量字符*常量*"static_cast
- 错误:调用"开始(常量无符号 int&)"没有匹配函数|
- GCC 错误,同时对常量无符号长字节使用代码块
- boost序列化错误C4308:负整数常量转换为无符号类型
- integer常量太大,以至于在为枚举分配最大类型值时它是无符号的
- 奇怪的无符号静态常量不是类模板中的常量表达式
- 将矢量<无符号字符>转换为常量无符号字符*
- glutBitmapString/glutStrokeString似乎需要常量无符号字符* - 字符串不起作用