2

此代码检查运行应用程序此参数:

INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{

    char* szCmdLine = lpCmdLine;

...
}

错误此行:错误 C2440:“初始化”无法从“LPTSTR”转换为“字符 *”

4

1 回答 1

2

这是因为LPTSTR可能是LPSTRLPWSTR考虑项目 UNICODE 设置。启用 unicode 时应用程序使用LPWSTR,如果没有LPSTR

LPSTR只是char*. LPWSTR- wchar_t*TLPTSTR平均TCHAR类型中,定义可以是什么char或项目中定义的任何符号。wchar_tUNICODE_UNICODE

LP表示“长指针”,long 是 32 位内存地址。STR- 细绳。

所以让我们描述LPSTR一下——“指向 ANSI 字符串的长指针”;LPWSTR- “指向宽字符串的长指针”和LPTSTR- “指向TCHAR字符串的长指针”。

ToWTletter 可以添加前缀,CLPCSTR, LPCTSTRLPCWSTR这意味着这些指针是常量,如const char*or const wchar_t*

因此,您的代码必须如下所示:

INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{

    TCHAR* szCmdLine = lpCmdLine;

...
}

或者

INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{

    LPTSTR szCmdLine = lpCmdLine;

...
}
于 2016-01-04T20:34:17.903 回答