小编Fel*_*unz的帖子

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

我使用的是 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);
}
Run Code Online (Sandbox Code Playgroud)

我用 调用该函数Lcd8_Write_String("Hello World");

我得到:

错误:将“Lcd8_Write_String”的参数 1 从指针传递到非封闭地址空间。

我该如何解决这个错误?

c microcontroller pointers avr mplab

3
推荐指数
1
解决办法
3917
查看次数

无法将“wchar_t”转换为“LPCSTR”

我使用 Atom 作为编辑器,并使用 g++ 编译器来编译我的 C++ 文件。

有问题的代码片段是:

bool openComPort(wchar_t* portSpecifier)
{
    DCB dcb;

    // Open Serial Port
    wprintf(L"Opening COM PORT: %s",portSpecifier);
    printf("\n");

    serialPort = CreateFile(portSpecifier,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

    if (serialPort == INVALID_HANDLE_VALUE)
    {
        wprintf(L"Error opening Serial port: %s\n",portSpecifier);
        return(false);
    }

    ...

    return true;
}

Run Code Online (Sandbox Code Playgroud)

如果我想编译它,我总是会收到错误:

错误:无法将“wchar_t”转换为“LPCSTR”{aka“const char”}serialPort = CreateFile(portSpecifier,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

我读过它应该与 Windows 和 UNICODE 或 ASCII 有关。

我通过按 ctrl+shift+U 并选择 UTF-8 确保 Atom 使用 UNICODE。

#define UNICODE我一开始就尝试过。没用。

我尝试过其他线程的不同解决方案,例如:

(_TCHAR*)wprintf(L"Opening COM PORT: %s",portSpecifier);
Run Code Online (Sandbox Code Playgroud)

我仍然遇到同样的错误。您对如何解决这个问题有什么建议吗?

c++ windows unicode winapi

1
推荐指数
1
解决办法
2869
查看次数

标签 统计

avr ×1

c ×1

c++ ×1

microcontroller ×1

mplab ×1

pointers ×1

unicode ×1

winapi ×1

windows ×1