无法将lpCmdLine参数分配给char *指针

时间:2016-01-04 20:10:34

标签: c++ mfc lptstr

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

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

    char* szCmdLine = lpCmdLine;

...
}
  

错误此行:错误C2440:'初始化'无法从'LPTSTR'转换为'char *'

1 个答案:

答案 0 :(得分:2)

因为LPSTR可能是LPWSTRLPWSTR考虑项目UNICODE设置。启用unicode时,应用程序使用LPSTR,如果不是LPSTR

char*只是LPWSTR的别名。 wchar_t* - TLPTSTR TCHAR中的char表示wchar_t类型,UNICODE_UNICODE在您的LPSTR符号中定义项目

LPSTR表示“长指针”,长为32位内存地址。 LPWSTR - 字符串。

所以让我们描述LPTSTR - “指向ANSI字符串的长指针”; TCHAR - “指向宽字符串的长指针”和W - “指向T字符串的长指针”。

CLPCSTR可以添加前缀LPCTSTR,如LPCWSTRconst 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; ... }

所以你的代码必须如下:

{{1}}

{{1}}