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

时间:2017-09-16 20:24:00

标签: c++ visual-studio-code

我是使用Visual Studio Code的完全初学者,我不知道我在做什么。 我已经四处寻找(也许还不够),但是我无法找到像我这样的人的一个简单的解释,关于如何配置我被重定向的.json文件,只要我点击旁边的黄色灯泡带有绿色波浪线的下划线。

Lightbulb example

c_cpp_properties.json

我只是想知道在Case <- c("A", "B", "C", "A", "B", "C", "A", "B", "C") ObservationNumber <- c(1, 1, 1, 2, 2, 2, 3, 3, 3) ObservedValue <- c(154, 152, 157, 173, 176, 171, 203, 205, 199) mydat <- as.data.frame(cbind(Case, ObservationNumber, ObservedValue),stringsAsFactors = F) mydat$ObservedValue <- as.numeric(mydat$ObservedValue) result <- data.frame() for(c in unique(mydat$Case)){ result <- rbind(result, data.frame(Case=c,Diff= mydat$ObservedValue[mydat$Case==c & mydat$ObservationNumber == min(mydat$ObservationNumber)] - mydat$ObservedValue[mydat$Case==c & mydat$ObservationNumber == max(mydat$ObservationNumber)] )) } result 放置什么才能使IntelliSense正常工作

2 个答案:

答案 0 :(得分:3)

自: https://code.visualstudio.com/docs/languages/cpp

  

下面你可以看到MinGW C ++包含路径已添加到Windows的browse.path中:

{
"name": "Win32",
"includePath": [
    "${workspaceRoot}"
],
"defines": [
    "_DEBUG",
    "UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
    "path": [
        "${workspaceRoot}",
        "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++"
    ],
    "limitSymbolsToIncludedHeaders": true,
    "databaseFilename": ""
    }
}

希望有所帮助! :)

答案 1 :(得分:1)

  

来自C / C ++扩展的官方文档:

配置includePath以获得更好的IntelliSense结果

如果在VS代码中打开文件夹时看到以下消息,则表示C ++ IntelliSense引擎需要有关包含文件所在路径的其他信息。

Configure includePath for better IntelliSense

定义包含路径在哪里?

包含路径在位于打开文件夹的.vscode目录中名为 c_cpp_properties.json 的文件的"includePath"设置中定义。

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

lightbulb menu "Edit "includePath" setting"

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

include error message

如何指定包含路径?

您可以使用下面介绍的技巧之一指定其余路径。

1。使用compile_commands.json文件提供includePaths并定义信息

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

use compileCommands setting

2。使用灯泡建议自动解决includePath

首先要尝试利用灯泡路径建议来自动解析包含路径。当您打开文件夹时,扩展程序将递归根据 c_cpp_properties中"browse.path"设置设置的路径搜索与您的代码正在使用的头文件匹配的潜在包含路径。 JSON 即可。单击#include语句下的绿色曲线,您将看到一个灯泡,提供允许IntelliSense解析所包含文件的路径建议。

lightbulb suggestions

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

3。手动添加包含路径

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

另外,对于MinGW,as the documentation of the extension explains您可以要求 gcc / g ++ 列出自己的包含文件:

gcc -v -E -x c++ nul

c_cpp_properties file snippet

验证包含路径是否已正确解析

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

  1. 源文件中的绿色波浪线不再显示
  2. 在“问题”窗口
  3. 中清除错误消息

    这表示IntelliSense引擎已解析包含路径,因此您可以开始享受当前转换单元的C或C ++代码的完整IntelliSense。请注意,如果其他文件属于需要配置其他包含路径的其他翻译单元,您仍可能会看到错误。

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

    Configuring MinGW

    c_cpp_properties.json reference guide