Подтвердить что ты не робот

Код Visual Studio includePath

Я пытаюсь создать C/С++ в коде Visual Studio. Я установил C/С++ и все соответствующие расширения.

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

Но есть зеленая строка под #include <stdio.h>, говорящая "Добавить путь к настройкам". Когда я нажимаю на него, он переходит к "c_cpp_properties.json".

Как и где я могу добавить пути включения в конфигурациях ниже?

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

Ответ 1

Как и где я могу добавить пути включения в конфигурациях ниже?

Список представляет собой строковый массив, поэтому добавление пути включения будет выглядеть примерно так;

"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 31 марта 2016 г.

Связанный источник имеет gif, показывающий формат для конфигурации Win32, но то же самое относится и к другим.

Приведенный выше пример включает путь SDK (OSX 10.11), если Xcode установлен.

Примечание. Я считаю, что обновление может занять некоторое время после изменения пути включения.

Расширение cpptools можно найти здесь.

Дополнительную документацию (от Microsoft) о поддержке языка C++ в VSCode можно найти здесь.


В течение 2018 года расширение C++ добавило еще одну опцию в compilerPath конфигурации c_cpp_properties.json файла c_cpp_properties.json;

compilerPath (необязательно) Абсолютный путь к компилятору, который вы используете для построения вашего проекта. Расширение запросит компилятор, чтобы определить системные пути включения и определения по умолчанию для использования для IntelliSense.

В случае использования includePath не понадобится, поскольку IntelliSense будет использовать компилятор для определения путей включения системы.


В целях сохранения (из обсуждения) ниже приведены основные фрагменты содержимого файла tasks.json для компиляции и выполнения файла C++ или файла C. Они допускают пробелы в имени файла (требуется экранировать дополнительные кавычки в json, используя \"). Оболочка используется в качестве бегуна, что позволяет выполнять компиляцию (clang...) и выполнение (&&./a.out) программы. Также предполагается, что файл tasks.json "живет" в локальной рабочей области (в каталоге .vscode). Дополнительные сведения о файле task.json, такие как поддерживаемые переменные и т.д., можно найти здесь.

Для 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"]
}

Для С;

{ 
    "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... 
}

Ответ 2

Для пользователей Mac установлены только инструменты командной строки вместо Xcode, проверьте каталог /Library/Developer/CommandLineTools/, например:

"configurations": [{
    "name": "Mac",
    "includePath": [
        "/Library/Developer/CommandLineTools/usr/lib/clang/8.1.0/include/",
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1/tr1/",
        "/usr/include/c++/4.2.1",
        "/usr/local/include",
        "/usr/include"
    ]
}]

Вам, вероятно, нужно изменить путь, если у вас установлена другая версия инструментов командной строки.

Примечание: Вы также можете открыть/сгенерировать файл c_cpp_properties.json помощью команды C/Cpp: Edit Configurations из палитры команд (⇧⌘P).

Ответ 3

Лучший способ настроить стандартные заголовки для вашего проекта - установить для свойства compilerPath конфигурации в файле c_cpp_properties.json. Не рекомендуется добавлять системные включаемые пути в свойство includePath.

Другой вариант, если вы предпочитаете не использовать c_cpp_properties.json это установить параметр C_Cpp.default.compilerPath.

Ответ 4

Этот ответ может быть поздно, но я просто решил исправить эту проблему. Вот мой файл c_cpp_properties.json:

{
"configurations": [
    {
        "name": "Linux",
        "includePath": [
            "${workspaceFolder}/**",                
            "/usr/include/c++/5.4.0/",
            "usr/local/include/",
            "usr/include/"
        ],
        "defines": [],
        "compilerPath": "/usr/bin/gcc",
        "cStandard": "c11",
        "cppStandard": "c++14",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4

}

Ответ 5

В настройках пользователя добавьте:

"C_Cpp.default.includePath":["path1","path2"]

Ответ 6

Как ни странно, я попробовал как C_Cpp.default.includePath, так и C_Cpp.default.systemIncludePath в своих настройках пользователя в settings.json, а при компиляции моего приложения я все равно получаю "sonoff\core_esp8266_timer.c: 24: 21: фатальная ошибка: c_types.h: Нет такого файла или каталога ".

Я также попытался добавить путь include в флагах сборки, используя параметр -lDir, но, увы, все еще строят ошибки.

Это серьезная боль в моей спине!