在 OSX Monterey 中,升级 Homebrew 安装的 clang 后,默认 C++ 标头的某些内容出现了问题。
我能够很好地从终端进行编译;如果我使用系统 clang(/usr/bin/clang
,它仍然是默认值和的结果which clang
),或者如果我使用 Homebrew 的较新的 clang(/usr/local/Cellar/llvm/14.0.6_1/bin/clang
),它都可以工作。
但是在 VSCode 中找不到任何默认的 C++ 标头。
例如,如果我#include <iostream>
,IntelliSense 会用红色波浪线标出它并且发出抱怨cannot open source file "iostream" C/C++(1696)
。
我尝试过重启 VSCode 和我的机器,也尝试Reset IntelliSense Database
过从命令面板重启。在C_Cpp > System Include Path
设置中,我尝试添加/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/
;在C_Cpp > Mac Framework Path
设置中,我尝试明确添加/System/Library/Frameworks/
。但这些都无法解决问题。
升级后,我还遇到了一些问题,即 clang 本身无法找到系统包含,通过重新安装 XCode 开发工具解决了这些问题。
- 如何调试为什么 IntelliSense 找不到标准标头?
- 如何修复此问题?
答案1
此问题已修复
升级 XCode(不仅仅是开发工具,而是整个应用程序;由于磁盘空间有限,自动更新已停止),以及
禁用 C++ 扩展然后重新启用它。
升级 XCode 本身并不能解决问题,直到禁用 C++ 然后重新启用它才起作用。我不知道前者是否真的有必要。
重新启动机器并退回 VSCode 本身也还不够。
我不知道为什么有必要切换扩展,但这肯定比卸载并重新安装 VSCode(这是我接下来要尝试的事情)更容易。