此代码检查运行应用程序此参数:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
char* szCmdLine = lpCmdLine;
...
}
错误此行:错误 C2440:“初始化”无法从“LPTSTR”转换为“字符 *”
这是因为LPTSTR
可能是LPSTR
或LPWSTR
考虑项目 UNICODE 设置。启用 unicode 时应用程序使用LPWSTR
,如果没有LPSTR
。
LPSTR
只是char*
. LPWSTR
- wchar_t*
。T
在LPTSTR
平均TCHAR
类型中,定义可以是什么char
或项目中定义的任何符号。wchar_t
UNICODE
_UNICODE
LP
表示“长指针”,long 是 32 位内存地址。STR
- 细绳。
所以让我们描述LPSTR
一下——“指向 ANSI 字符串的长指针”;LPWSTR
- “指向宽字符串的长指针”和LPTSTR
- “指向TCHAR
字符串的长指针”。
ToW
或T
letter 可以添加前缀,C
如LPCSTR
, LPCTSTR
,LPCWSTR
这意味着这些指针是常量,如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;
...
}