VSCode编写C++文件时头文件报错,下划线遇到无法打开源文件的问题

此种问题一般是使用LLVM+MINGW时遇到的,本人把c_cpp_properties.json中compilerPath从g++.exe修改成了C:/mingw64/bin/clang++.exe,导致新编写的cpp文件头文件红下划线报错,提示无法找到源文件iostream。
先给出解决方案:
1.把clang++修改为g++
2.保留clang++,
修改compilerPath下方includePath,添加

"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
"C:/mingw64/x86_64-w64-mingw32/include"

具体路径根据你安装mingw的位置进行修改。
也可以改成:

"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/**",
"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/**",
"C:/mingw64/x86_64-w64-mingw32/include/**"

但是请注意,博主第一次修改成上述形式时VSCODE仍然报错,修改成第一种后,没报错后再修改成第二种才没报错,搞不懂原因。
原因分析:
你可以输入
clang++ -v -x c -E -
来看默认include进来文件夹,在默认情况下,是不包括mingw的头文件的,所以导致vscode报错找不到头文件。需要指定--target=x86_64-w64-mingw才行。
也就是 clang++ -v -x c --target=x86_64-w64-mingw -E -
这样才会include进mingw默认的path。
但是这个json里好像只能设置compilerPath 不知道能不能直接添加参数,本人还没尝试
输入g++ -v -x c -E -时,默认include进mingw文件,因此不会报错。
如果后续在vscode使用clang++编译提示找不到头文件,请在tasks.json中args参数下添加--target=x86_64-w64-mingw.
另外,博主在使用新版本llvm配mingw时遇到float.h不对的问题,请参考博主的这篇博文修改:float.h报错解决

posted @ 2023-03-14 20:01  JessieLin  阅读(1070)  评论(0编辑  收藏  举报