我正在尝试在ATMega 169P微控制器的液晶显示屏上显示内容。使用C时,我可以使用此代码:
char str[50];
int value = 100;
str = sprintf(str, "some text %d", value);
LCD_puts(str);
它会显示正常。 LCD_puts是我老师给我们的一种方法。 但是,我正在尝试使用C ++进行分配,而且我无法使LCD_puts()工作。我使用了sprintf和snprintf,使用snprintf时收到以下编译错误。我正在使用的代码也在下面。 (格式化道歉,我无法发布图片)。
char str[100];
int rpm = 100; //Genaric value
snprintf(str, 100, '%d in',rpm);
LCD_puts(str);
从'char *'无效转换为'unint8_t *'{aka unsigned char *}'[ - fpermissive]
我认为我的确切代码不是必需的,我只需要知道为什么会出现这个错误,以及是否有一个C ++函数,它等同于我可以使用的sprintf。如果需要,我会发布我的确切代码。
答案 0 :(得分:2)
您正在尝试将unsigned char数组存储到signed char数组中。将str声明为unsigned char:
unsigned char str[100];
或在参数中将str转换为unsigned char:
snprintf((uint8_t*)str, 100, '%d in',rpm);
在这种情况下,uint8_t
和unsigned char
是等效的。