0

我正在尝试在 ATMega 169P 微控制器的 LCD 屏幕上显示一些内容。使用 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] 的无效转换

我认为不需要我的确切代码,我只需要知道为什么会导致此错误,以及是否有一个与我可以使用的 sprintf 等效的 C++ 函数。但是,如果需要,我会发布我的确切代码。

4

1 回答 1

2

您正在尝试将 unsigned char 数组存储到 signed char 数组中。要么将 str 声明为 unsigned char:

unsigned char str[100];

或将参数中的 str 转换为 unsigned char:

snprintf((uint8_t*)str, 100, '%d in',rpm);

在这种情况下uint8_tunsigned char是等价的。

于 2015-04-09T00:12:29.427 回答