当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
6 Star 36 Fork 11

cpp_tutorial/vscode_cpp_starter
暂停

test中main.cpp报错无法产生头文件但是可以正常编译运行

已完成
创建于  
2023-11-28 23:49

如图,提示头文件缺失,并报错std为未声明标识符,但字build文件夹下已产生compile_command.json。输入图片说明

评论 (13)

曹嘉伟 创建了任务 2年前
FeignClaims 任务状态待办的 修改为进行中 2年前
FeignClaims 负责人设置为FeignClaims 2年前
FeignClaims 添加了
 
配置失败
标签
2年前
展开全部操作日志

正常编译是指的那些可以正常编译?

  • 通过 Code Runner 插件运行?
  • 调试?

如果确认 compile_commands.json 等都没有问题,那问题应该是

  • 没有重启 VSCode 或者重启 clangd 拓展,重启即可。
  • 以前在电脑上安装了旧版本 llvm,请在终端输入 clangd --version 确认一下版本是否是 17.0.4,如果不是,参考此处进行修复。

正常编译运行:
通过code runner 运行结果输入图片说明,运行结果与warning提醒数正常,
调试:输入图片说明调试四种方法正常,输入图片说明可以正常执行至断点,并且最后输出无误。
关于llvm版本:输入图片说明版本无误且路径选择无误。
clangd扩展与vscode重启:已进行过vscode Reload window,且clangd插件未提示需要进行重启以运行输入图片说明
compile_commands.json内容:输入图片说明
在尝试以上解决方法后还是出现了不应该出现的报错信息,请问如何进行修正。

问题是否与clang target相关?注意到target为gnu,与其余issue中不一致

和这个没关系

能看看 clangd 的输出吗?全选以文本形式粘贴过来。

```
粘贴过来
```

输入图片说明

compile_commands.json 也粘贴成文本看看吧,截图不全。

compile_commands.json的内容
[
{
"directory": "C:/cpp_starter/build",
"command": "C:\msys64\clang64\bin\clang++.exe -DUNICODE -D_UNICODE -g -std=c++20 -fcolor-diagnostics -municode -Wall -Wextra -Wextra-semi -Wcast-align -Wdouble-promotion -Wformat=2 -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-noreturn -Wnon-virtual-dtor -Wnull-dereference -Wold-style-cast -Woverloaded-virtual -Wpacked -Wpedantic -Wshadow -Wno-sign-conversion -Wunused -ftemplate-backtrace-limit=0 -fconstexpr-backtrace-limit=0 -o CMakeFiles\structure_only.dir\src\example\constexpr_map.cpp.obj -c C:\cpp_starter\src\example\constexpr_map.cpp",
"file": "C:\cpp_starter\src\example\constexpr_map.cpp",
"output": "CMakeFiles\structure_only.dir\src\example\constexpr_map.cpp.obj"
},
{
"directory": "C:/cpp_starter/build",
"command": "C:\msys64\clang64\bin\clang++.exe -DUNICODE -D_UNICODE -g -std=c++20 -fcolor-diagnostics -municode -Wall -Wextra -Wextra-semi -Wcast-align -Wdouble-promotion -Wformat=2 -Wimplicit-fallthrough -Wmisleading-indentation -Wmissing-noreturn -Wnon-virtual-dtor -Wnull-dereference -Wold-style-cast -Woverloaded-virtual -Wpacked -Wpedantic -Wshadow -Wno-sign-conversion -Wunused -ftemplate-backtrace-limit=0 -fconstexpr-backtrace-limit=0 -o CMakeFiles\structure_only.dir\test\main.cpp.obj -c C:\cpp_starter\test\main.cpp",
"file": "C:\cpp_starter\test\main.cpp",
"output": "CMakeFiles\structure_only.dir\test\main.cpp.obj"
}
]

System include extraction: not allowed driver C:\msys64\clang64\bin\clang.exe

可能是我更新教程时不小心把自己电脑上的配置更新过去了,你可以尝试【左下角齿轮】-【设置】-【右上角打开设置】,将 398 行的 "--query-driver=/opt/homebrew/bin/*", 删去。

或者下载更新后的配置文件,重新导入并覆盖配置文件

这我就实在不清楚了,可能是你电脑里安装的 Microsoft Visual Studio 9.0 Microsoft Visual Studio 8 等 Visual Studio 软件的问题。这属于巧合引发的问题,只能反复尝试了,从上往下依次试试吧(每一步做完都记得重启 clangd):

  • 试试在设置里加上一行 "clangd.path": "clangd",

    输入图片说明

  • 按教程里说的,再进入环境变量,将教程中加的 msys2 路径移到更前面。

  • 删除 .cache 文件夹 和 build 文件夹,用 CMake 重新选择 clang 17.0.4 进行配置,重启 clangd。

  • 卸载这些冗余的 Visual Studio 软件。

我也碰到了类似的问题,我似乎用如下方法正确解决了
输入图片说明
就是将我系统内所有编译器的路径以逗号分隔的形式加入到querydriver中

教程里针对 gcc 说过这个,但忘了其实可以用在这地方了,感谢。

FeignClaims 任务状态进行中 修改为已完成 1年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
曹嘉伟-caojiawei270 9468274 feignclaims 1663643895 SwingURM-swingurm
C++
1
https://gitee.com/cpp_tutorial/vscode_cpp_starter.git
git@gitee.com:cpp_tutorial/vscode_cpp_starter.git
cpp_tutorial
vscode_cpp_starter
vscode_cpp_starter

搜索帮助