Я новичок в программировании на C, поэтому, пожалуйста, помогите мальчику. При компиляции у меня возникает проблема с недопустимым инициализатором. Это соответствующий код.Компилятор бросает «Неверный инициализатор» при записи char const *
void lcd_writePString(char const* string) {
char c;
while ((c = (char)pgm_read_byte(string++)))
lcd_writeChar(c);
}
void os_errorPStr(char const* str) {
SREG &= 0b10111111; //Interrupts global deaktivieren
lcd_clear();
lcd_writePString(PSTR(str)); //THIS IS WHERE THE COMPILER THROWS OUT THE ERROR
while (os_getInput()!=0b10000001){
os_waitForInput();
}
lcd_clear();
SREG |= 0b01000000;
}
Так почему же мой компилятор выбрасывает ошибку "invalid initializer"? PSTR записывает строку во флэш-память моего микроконтроллера.
Это то, что делает PSTR:
/** \ingroup avr_pgmspace
\def PSTR(s)
Used to declare a static pointer to a string in program space. */
# define PSTR(s) ((const PROGMEM char *)(s))
#else /* !DOXYGEN */
/* The real thing. */
# define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); &__c[0];}))
#endif /* DOXYGEN */
Какие библиотеки/аппаратные средства вы используете? Эти функции 'lcd_ *' и 'PSTR()' не являются частью стандарта C, поэтому вам нужно предоставить нам дополнительную информацию. – GoBusto
Что такое 'PSTR'? Мы не можем ответить на этот вопрос, не зная об этом? –
Эй, Андрей, комментарий показывает, где ошибка. Я добавил к своему сообщению, что делает PSTR exaclty =) Спасибо за ваши усилия до сих пор – zeldamania