首页 文章

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

提问于
浏览
3

我在macOS Sierra上使用Visual Studio Code 1.14.2并安装了Microsoft C / C ms-vscode.cpptools 扩展,但是在设置包含路径以使IntelliSense正确检查标准库头时没有产生错误并且回退到'Tag Parser'机制 .

默认 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'严重性:'信息'消息:'#include错误检测到 . 请更新您的includePath . Tag翻译器将提供此翻译单元的智能感知功能(/path/to/vscode.cc) . at:'1,1'来源:''

file:'file:///path/to/vscode.cc'严重性:'Info'消息:'无法打开源文件'endian.h“(依赖于”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

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

1 回答

  • 3

    这竟然是IntelliSense引擎中的配置错误 . Mac标头需要定义符号 __LITTLE_ENDIAN__ ,而不是 . 我们已在最新的扩展更新中更正了此问题,因此无需再添加到endian.h的路径 .

相关问题