Я пытаюсь что-то отобразить на ЖК-экране микроконтроллера 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, которую я мог бы использовать. Однако я опубликую свой точный код при необходимости.
Вы пытаетесь сохранить массив без знака в массиве со знаком. Либо объявите str как неподписанный символ:
unsigned char str[100];
или приведите str в аргументе как неподписанный символ:
snprintf((uint8_t*)str, 100, '%d in',rpm);
В этом случае uint8_t
а также unsigned char
эквивалентны.