Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio代码:如何配置includePath以获得更好的IntelliSense结果_C++_Visual Studio Code - Fatal编程技术网

C++ Visual Studio代码:如何配置includePath以获得更好的IntelliSense结果

C++ Visual Studio代码:如何配置includePath以获得更好的IntelliSense结果,c++,visual-studio-code,C++,Visual Studio Code,我是一个使用VisualStudio代码的完全初学者,我不知道我在做什么 我到处搜索过(可能还不够),但对于像我这样的人来说,我找不到一个简单的解释,说明如何配置c\u cpp\u properties.json文件,每当我点击一条带绿色斜线的线旁边的黄色灯泡时,就会重定向到该文件 我只想知道在.json中放入什么才能使IntelliSense正常工作。来自: 下面可以看到,MINW C++包含路径已经添加到BuffSE.PATH for Windows: 从C/C++扩展的官方文档中: 配

我是一个使用VisualStudio代码的完全初学者,我不知道我在做什么

我到处搜索过(可能还不够),但对于像我这样的人来说,我找不到一个简单的解释,说明如何配置
c\u cpp\u properties.json
文件,每当我点击一条带绿色斜线的线旁边的黄色灯泡时,就会重定向到该文件

我只想知道在
.json
中放入什么才能使IntelliSense正常工作。

来自:

下面可以看到,MINW C++包含路径已经添加到BuffSE.PATH for Windows:

从C/C++扩展的官方文档中:

配置includePath以获得更好的IntelliSense结果 如果在VisualStudio代码中打开文件夹时看到以下消息,则意味着C++智能感知引擎需要附加文件,其中包含了包含文件的路径。

包含路径在哪里定义? 包含路径在位于打开文件夹的.vscode目录中名为c_cpp_properties.json的文件中的
“includePath”
设置中定义

您可以使用命令调色板中的
“C/Cpp:Edit Configurations”
命令,或选择灯泡菜单中的
“Edit”includePath“setting”
来创建或打开此文件(请参见下面的屏幕截图)。找到灯泡的最快方法是滚动到源文件的顶部,然后单击显示在#include语句下的任何绿色曲线

打开文件夹时,扩展将尝试根据您的操作系统定位您的系统标题,但它不知道您的项目所依赖的任何其他库。您可以将鼠标悬停在绿色曲线上或打开“问题”窗口,以了解IntelliSense引擎无法打开的标题-有时无法找到的是相关标题

如何指定包含路径? 您可以使用下面描述的技术之一指定其余路径

  • 使用compile_commands.json文件提供includePath和定义信息

    扩展可以从compile_commands.json文件中获取
    “includePath”
    “defines”
    的信息,该文件可以由许多构建系统(如CMake和Ninja)自动生成。查找定义当前配置的部分(默认情况下,每个操作系统有一个配置,如“Win32或“Mac”),然后设置
    “compileCommand”“c\u cpp\u properties.json中的
    属性到compile\u commands.json文件的完整路径,扩展名将使用它而不是
    ”包括“
    定义”
    IntelliSense属性

  • 使用灯泡建议自动解析includePath

    首先要尝试的是利用灯泡路径建议自动解析包含路径。打开文件夹时,扩展名将根据c\u cpp\u properties.json中的
    “browse.path”
    设置的路径,递归地搜索与代码使用的头文件匹配的潜在包含路径。单击#include statements下的绿色曲线,您将看到一个灯泡,提供允许IntelliSense解析包含文件的路径建议

    如果在灯泡中看不到路径建议,请尝试将标题可能位于的根文件夹添加到c_cpp_properties.json中的
    “browse.path”
    设置中。这允许扩展到递归地在这些文件夹中搜索,并在搜索过程中提供更多建议

  • 手动添加包含路径

    如果上面没有一个完全解析路径,您可以在c_cpp_properties.json文件中手动指定项目所依赖的头的路径。查找定义当前配置的部分(默认情况下,每个操作系统有一个配置,如“Win32或“Mac”),并在
    “includePath”
    设置中添加路径,并在
    定义中定义路径“
    设置。例如,下面的屏幕截图显示了指定Mac配置路径的文件片段

    此外,对于MinGW,您可以要求gcc/g++列出自己的include文件:

    gcc -v -E -x c++ nul
    

  • 验证包含路径是否已正确解析 有两种方法可以验证包含路径是否正确解析:

  • 源文件中的绿色曲线不再显示
  • 在“问题”窗口中清除错误消息
  • 这表明智能感知引擎已经解决了包含路径,因此您可以开始享受当前编译单元的C或C++代码的完整智能感知。请注意,如果其他文件属于需要配置其他包含路径的不同翻译单元,则仍可能在这些文件上看到错误

    如果这不能解决您的问题,请查看下面的MinGW配置,并尝试为相应/类似的头文件和文件夹设置Cygwin安装的适当位置。


    我已经安装了cygwin,你知道代码是什么吗?另外,当我输入任何与原始代码不同的代码时,它会给出一个错误“未能解析”e:\\.vscode\c\\.cpp\.json:Unexpected token]在json的1896位置“你只需复制/粘贴官方文档,是吗?你没有看到我答案的第一段文字吗?我自己一直在为VSCode的C/C++扩展的开发做出贡献,因此,我认为我有权至少复制、编辑和发布一部分文档,以供可能需要的人使用
    gcc -v -E -x c++ nul