此代码检查运行应用程序的此参数:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
char* szCmdLine = lpCmdLine;
...
}
Error this lines : error C2440: 'initializing' cannot convert from 'LPTSTR' to 'char *'
最佳答案
这是因为考虑到项目 UNICODE 设置,LPTSTR
可能是 LPSTR
或 LPWSTR
。启用 unicode 后,应用程序使用 LPWSTR
,如果没有 LPSTR
。
LPSTR
只是 char*
的别名。 LPWSTR
- wchar_t*
。 LPTSTR
中的 T
表示 TCHAR
类型,其定义可以是 char
或 wchar_t
任何 UNICODE
或 _UNICODE
符号在您的项目中定义。
LP
的意思是“长指针”,long是32位内存地址。 STR
- 字符串。
所以让我们描述一下LPSTR
- “指向 ANSI 字符串的长指针”; LPWSTR
- “指向宽字符串的长指针”和 LPTSTR
- “指向 TCHAR
字符串的长指针”。
对于W
或T
字母可以添加前缀C
,如LPCSTR
、LPCTSTR
、LPCWSTR
这意味着这些指针是常量,如 const char*
或 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;
...
}
关于c++ - 无法将 lpCmdLine 参数分配给 char* 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599009/