VS2019 constchar* 类型的参数与LPCTSTR类型的参数不兼容

发布于 2021-09-13  501 次阅读


问题分析:
Easyx中很多函数字符串类参数类型是 LPCTSTR类型的,比如说InputBox函数、loadimage函数等等,如果写成

char s[15];
InputBox(s, 10, "please inputr");

在vs编译器中会提示两个错误:

  1. s处 “const char* 类型的参数与LPCTSTR类型的参数不兼容”。
  2. "please inputr”处 “const char* 类型的参数与LPCTSTR类型的参数不兼容”。

因为Windows使用两种字符集ANSI和UNICODE,分别是单字节编码方式与双字节编码方式。而easyx的函数中使用的都是双字节编码方式,因此为了解决这个问题我们需要把改成双字节编码方式。

解决方法:
使用的是VS编译器(高版本vc)
1.把 char 改成 wchar_t。
2.给 "please inputr” 前面加上L。也就是写成 L"please input r"。
或者
1.把 char 改成TCHAR。
2.给 "please inputr” 加上_T()。也就是写成 _T("please input r")。
【补充】
wchar_t 类型变量与L""是想对应的,也就是说在" "前面加上L即转换成wchar_t类型变量。
TCHAR类型变量与_T(" ")是相对应的。

使用的是VC6.0编译器
1.不必修改。
2.与上面的使用vs时相比,不支持wchar_t 类型的变量,也就是说可以写成TCHAR 写成 _T("")


天道酬勤