VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“

VSCode C/C++提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容"

问题产生原因

VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式标出。没有错误的代码将得到一个清爽的问题区,如下图所示。

VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第1张图片
然而,有些代码(特别是使用了MFC,调用了WINAPI的那些代码)中,在Visual Studio IDE中项目属性设置了多字节字符集的工程,都不用宽字符类型LPCWSTR/LPWSTR,而是用LPCSTR/LPSTR/char*等类型。VSCode打开代码默认是UNICODE字符集的,认为你应该使用前者,所以会产生下图的错误:
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第2张图片

解决方式1

Ctrl+Shift+P,输入Edit Configurations,出现下图所示的选项,点击C/C++编辑配置(JSON)
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第3张图片
然后会自动在文件夹下创建子文件夹.vscode,并在其中新建c_cpp_properties.json,内容如下所示:
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第4张图片
将"defines"属性下的"UNICODE","_UNICODE"删除即可,效果如下:
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第5张图片
保存文件,这个错误提示就消失了!

解决方式2

打开C/C++扩展设置,如图所示:
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“_第6张图片
修改上图右边标出来的Defines项。该项默认为空,我们在这里点击“添加项”,然后输入_MBCS,并点击输入框右侧的“确定”。
然后关掉设置页,警告就会消失。

你可能感兴趣的:(c++,VSCode,MSVC,vscode,c++,ide)