VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容"
问题产生原因
VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式标出。没有错误的代码将得到一个清爽的问题区,如下图所示。
然而,有些代码(特别是使用了MFC,调用了WINAPI的那些代码)中,在Visual Studio IDE中项目属性设置了多字节字符集的工程,都不用宽字符类型LPCWSTR/LPWSTR
,而是用LPCSTR/LPSTR/char*
等类型。VSCode打开代码默认是UNICODE字符集的,认为你应该使用前者,所以会产生下图的错误:
解决方式1
按Ctrl+Shift+P
,输入Edit Configurations,出现下图所示的选项,点击C/C++编辑配置(JSON)
。
然后会自动在文件夹下创建子文件夹.vscode
,并在其中新建c_cpp_properties.json
,内容如下所示:
将"defines"属性下的"UNICODE","_UNICODE"删除即可,效果如下:
保存文件,这个错误提示就消失了!
解决方式2
打开C/C++扩展设置,如图所示:
修改上图右边标出来的Defines
项。该项默认为空,我们在这里点击“添加项”,然后输入_MBCS
,并点击输入框右侧的“确定”。
然后关掉设置页,警告就会消失。