- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
此代码检查运行应用程序此参数:
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/
我试图了解 lpCmdLine 的行为方式,但它似乎有点违反直觉。 最初,我认为它只是一个指向整个命令字符串的指针,但这段代码显示并非如此,因为显示 lpCmdLine 直接显示垃圾。 #includ
此代码检查运行应用程序此参数: INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT i
我是一名优秀的程序员,十分优秀!