C 将参数从指针传递到非封闭地址空间时出错

C 将参数从指针传递到非封闭地址空间时出错,c,pointers,microcontroller,avr,mplab,C,Pointers,Microcontroller,Avr,Mplab,我使用的是ATMEGA16M1微控制器和MPLAB IDE 我有以下函数来写入端口 void Lcd8_Write_String(char *a) { int i; for(i=0;a[i]!='\0';i++) Lcd8_Write_Char(a[i]); } void Lcd8_Write_Char(char a) { pinChange(RS,1); // => RS = 1 Lcd8_Port(a);

我使用的是ATMEGA16M1微控制器和MPLAB IDE

我有以下函数来写入端口

void Lcd8_Write_String(char *a)
{
    int i;
    for(i=0;a[i]!='\0';i++)
    Lcd8_Write_Char(a[i]);
}

void Lcd8_Write_Char(char a)
{
    pinChange(RS,1);             // => RS = 1
    Lcd8_Port(a);                //Data transfer
    pinChange(EN,1);             // => E = 1
    _delay_ms(1);
    pinChange(EN,0);             // => E = 04
    _delay_ms(1);
}
我使用
Lcd8_Write_字符串(“Hello World”)调用函数

我得到
错误:将“Lcd8\u Write\u String”的参数1从指针传递到非封闭地址空间

如何解决此错误?

如果您写入:

Lcd8_Write_String("Hello World");
字符串
“Hello World”
将位于微控制器的闪存中,而不是RAM中。因此,您必须将功能切换到:

void Lcd8_Write_String(const char *a)

也许可以做一个指向Mike aaaaaaa的
const char
@Mike aaaaaaa的指针,然后编译它!非常感谢你。我找了好长时间的答案。