我正在try 用Visual Studio代码构建C/C++.我安装了C/C++和所有相关的扩展.

#include <stdio.h>
int main() {
    printf("Test C now\n");
    return 0;
}

#include <stdio.h>以下有一条绿线,上面写着"将包含路径添加到设置".当我点击它时,它会转到"c_cpp_properties.json".

我如何在下面的配置中添加Include路径,以及在哪里添加Include路径?

"configurations": [
    {
        "name": "Mac",
        "includePath": ["/usr/include"]
    }
]

推荐答案

对这种情况有更新的看法.在2018年期间,C++扩展向c_cpp_properties.json文件的配置compilerPath添加了另一个选项;

compilerPath(可选) 用于生成项目的编译器的绝对路径.该扩展将查询编译器以确定用于IntelliSense的系统包含路径和默认定义.

如果使用includePath,则不需要includePath,因为IntelliSense将使用编译器来计算系统包含路径.


原来,

如何以及在何处在以下配置中添加包含路径?

列表是一个字符串数组,因此添加一个include路径看起来像;

"configurations": [
    {
        "name": "Mac",
        "includePath": ["/usr/local/include",
            "/path/to/additional/includes",
            "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include"
        ]
    }
]

来源cpptools blog 31 March 2016

链接的源代码有一个gif,显示Win32配置的格式,但其他配置也是如此.

The above sample includes the SDK (OSX 10.11) path if Xcode is installed

Note我发现一旦包含路径被更改,更新可能需要一段时间.

cpptools扩展名可以是found here.

有关VSCode中C++语言支持的更多文档(来自Microsoft)可以是found here.


为了保存(来自讨论),以下是任务内容的基本片段.JSON文件编译和执行C++文件或C文件.它们允许在文件名中使用空格(需要使用\"转义json中的附加引号).shell as the runner使用,因此允许编译(clang...)和执行(&& ./a.out)程序.它还假设任务.json"存在"于本地工作区(在目录.vscode下).进一步的任务.json详细信息,例如支持的变量等,可以是found here.

对于C++;

{ 
    "version": "0.1.0", 
    "isShellCommand": true, 
    "taskName": "GenericBuild", 
    "showOutput": "always", 
    "command": "sh", 
    "suppressTaskName": false, 
    "args": ["-c", "clang++ -std=c++14 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"]
}

对于C;

{ 
    "version": "0.1.0", 
    "isShellCommand": true, 
    "taskName": "GenericBuild", 
    "showOutput": "always", 
    "command": "sh", 
    "suppressTaskName": false, 
    "args": ["-c", "clang -std=c11 -Wall -Wextra -pedantic -pthread \"${file}\" && ./a.out"] // command arguments... 
}

C++相关问答推荐

根据工具链文件中的定义替换单个函数定义

如何避免使用相对路径包含在c中

C strlen on char array

为什么在Linux(特别是Ubuntu 20.04LTS)上,POSIX共享内存对象在重启后仍然存在,然后突然变成了根用户?

增加getaddrinfo返回的IP地址数量

在c++中使用堆栈的有效括号

以下声明和定义之间的区别

每次除以或乘以整数都会得到0.0000

Tic-tac-toe:从文件加载存储

使用ld将目标文件链接到C标准库

为什么WcrTomb只支持ASCII?

为什么我的二叉树删除删除整个左部分的树?

用C++高效解析HTTP请求的方法

与外部SPI闪存通信时是否应禁用中断?

生成一个半RNG,结果用C表示(无随机/随机)

浮动目标文件,数据段

在C中,为什么这个带有递增整数的main函数从不因溢出而崩溃?

使用 c 中的 write() 函数将非 ASCII 字符写入标准输出

如何使用 VLA 语法使用 const 指针声明函数

在 C23 之前如何对空指针使用nullptr?