【问题标题】:What are the correct macOS vscode intellisense C++ include paths for the standard library?标准库的正确 macOS vscode intellisense C++ 包含路径是什么?
【发布时间】:2018-01-13 05:23:33
【问题描述】:

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

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

{
  "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 &lt;exception&gt; 带有下划线。将鼠标悬停在它上面表示:

文件:'file:///path/to/vscode.cc' 严重性:“信息” 消息:'#include 检测到错误。请更新您的 includePath。此翻译单元 (/path/to/vscode.cc) 的 IntelliSense 功能将由标记解析器提供。 在:'1,1' 来源:''

文件:'file:///path/to/vscode.cc' 严重性:“信息” 消息:'无法打开源文件“endian.h”(“异常”的依赖性)' 在:'1,1' 来源:''

我在我的文件系统中搜索了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

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

【问题讨论】:

  • 我看到了 stackoverflow.com/questions/37522462/… 和上面的 cmets,但尽管有回复,我仍然看到同样的问题。我尝试将建议的路径添加到包含路径列表中,但没有帮助。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多