[英]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.