[英]How could I cast a c++ unsigned char variable to a char variable while keeps its value
[英]How can I assign a const unsigned char value to a variable inside a condition in c++?
我正在使用 C++ 对微控制器进行编程,我遇到了这种情况。
我在.h
文件中有几个const unsigned char
。 前任:
const unsigned char epd_bitmap_icon1 [] = {...
const unsigned char epd_bitmap_icon2 [] = {...
我有一个函数采用以下变量之一:
void drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);
在这种情况下,我需要根据某个值有条件地传递不同的位图。
在 python 中会是这样的:
if value > 80:
icon = epd_bitmap_icon1
elif value > 30:
icon = epd_bitmap_icon2
else:
icon = edp_bitmap_icon3
然后将icon
值作为第三个参数传递给drawBitmap
。
我不知道如何在 C++ 中做到这一点,我试过这个:
if (batteryChargePercent > 80) {
unsigned char* icon = epd_bitmap_icon1;
}
else if (batteryChargePercent > 30) {
unsigned char* icon = epd_bitmap_icon2;
} else {
unsigned char* icon = epd_bitmap_icon3;
}
但我得到这个错误:
error: invalid conversion from 'const unsigned char*' to 'unsigned char*' [-fpermissive]
在if
if
分配它。
const unsigned char *icon;
if (batteryChargePercent > 80) {
icon = epd_bitmap_icon1;
} else if (batteryChargePercent > 30) {
icon = epd_bitmap_icon2;
} else {
icon = epd_bitmap_icon3;
}
您需要在指针声明中使用const
来解决错误消息。
对于简单的情况,您可以使用三元:
const unsigned char* icon = batteryChargePercent > 80 ? epd_bitmap_icon1 :
batteryChargePercent > 30 ? epd_bitmap_icon2 :
epd_bitmap_icon3;
或者,如果它更复杂,您可以使用现场调用的 lambda:
const unsigned char* icon = [&]() {
if (batteryChargePercent > 80) {
return epd_bitmap_icon1;
}
else if (batteryChargePercent > 30) {
return epd_bitmap_icon2;
} else {
return epd_bitmap_icon3;
}
}();
此外,虽然还不是标准的,但语句表达式可能会帮助您:
const unsigned char* icon = ({
const unsigned char* retval;
if (batteryChargePercent > 80) {
retval = epd_bitmap_icon1;
}
else if (batteryChargePercent > 30) {
retval = epd_bitmap_icon2;
} else {
retval = epd_bitmap_icon3;
}
retval;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.