c++ - 什么是正确的 macOS vscode intellisense C++ 包含标准库的路径?

标签 c++ c visual-studio-code vscode-settings

我在 macOS Sierra 上使用 Visual Studio Code 1.14.2 并安装了 Microsoft C/C++ ms-vscode.cpptools扩展,但在设置包含路径时遇到问题,无法让 IntelliSense 正确检查标准库 header ,而不会产生错误并回退到“标记解析器”机制。

默认c_cpp_properties.json包含此 vscode 版本的以下内容:

{
  "configurations": [
    {
      "name": "Mac",
      "includePath": [
        "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
        "/usr/local/include",
        "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include",
        "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
        "/usr/include",
        "${workspaceRoot}"
      ],
      "defines": [],
      "intelliSenseMode": "clang-x64",
      "browse": {
        "path": [
          "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
          "/usr/local/include",
          "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include",
          "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
          "/usr/include",
          "${workspaceRoot}"
        ],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": ""
      }
    },
...
}

例如,使用一个简单的 C++ 文件,例如:

#include <exception>

int main() {
    return 0;
}

#include <exception>有下划线。将鼠标悬停在它上面:

file: 'file:///path/to/vscode.cc' severity: 'Info' message: '#include errors detected. Please update your includePath. IntelliSense features for this translation unit (/path/to/vscode.cc) will be provided by the Tag Parser.' at: '1,1' source: ''

file: 'file:///path/to/vscode.cc' severity: 'Info' message: 'cannot open source file "endian.h" (dependency of "exception")' at: '1,1' source: ''

我在我的文件系统中搜索了 endian.h .剔除看起来与主机开发实际相关的可能性(即放弃 iOS/WatchOS/等):

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/i386/endian.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/machine/endian.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/i386/endian.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/machine/endian.h
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/i386/endian.h
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/machine/endian.h
/usr/include/i386/endian.h
/usr/include/machine/endian.h

有谁知道这个问题的正确解决方法是什么?

最佳答案

这原来是 IntelliSense 引擎中的一个配置错误。 Mac header 需要定义符号 __LITTLE_ENDIAN__,但事实并非如此。我们已经在最新的扩展更新中纠正了这个问题,因此不再需要添加到 endian.h 的路径。

关于c++ - 什么是正确的 macOS vscode intellisense C++ 包含标准库的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45520903/

相关文章:

visual-studio-code - VS Code Remote-SSH 不会重新连接到远程 Ubuntu 主机上的一个特定工作目录

c++ - 在 VSCode 中包含 SFML 库 "SFML/Graphics.hpp no such file or directory"gcc

c++ - 为类方法中与类在同一命名空间中定义的结构调用重载运算符

c++ - Android NDK cmake 和依赖库

c - 函数中使用的 fopen 将文件地址包含在字符串中

c - 指针:*p++ 作为左值和右值之间的区别

visual-studio-code - 迅雷客户端在 vscode 中不显示

c++ - 如何从 C++ 中的整数除法返回 double ?

c++ - Qt 4.7 : TCP thread, 数据传输导致内存泄漏

c - 如果语句不起作用?