@ShihabShahriar Строго говоря, исходный репозиторий находится под лицензией MIT, поэтому, вероятно, документация тоже есть, что может означать, что этот ответ также под лицензией MIT.

олный новичок в использовании кода Visual Studio, и я понятия не имею, что я делаю. Я искал (возможно, не достаточно), но я не могу найти простое объяснение для кого-то, как я, о том, как настроитьc_cpp_properties.json файл, к которому меня перенаправляют всякий раз, когда я нажимаю на желтую лампочку рядом с линией, которая подчеркнута зеленым загогулином.

Пример лампочки

c_cpp_properties.json

Я просто хочу знать, что положить в.json заставить IntelliSense работать правильно

Ответы на вопрос(2)

Настройка includePath для улучшения результатов IntelliSense

Если при открытии папки в VS Code вы видите следующее сообщение, это означает, что движку C ++ IntelliSense требуется дополнительная информация о путях, в которых находятся ваши включаемые файлы.

Где определены пути включения?

Пути включения определены в"includePath" установка в файле с именемc_cpp_properties.json находится в каталоге .vscode в открытой папке.

Вы можете создать или открыть этот файл, используя"C/Cpp: Edit Configurations" Команда в палитре команд или выбрав"Edit "includePath" setting" в меню лампочки (см. скриншот ниже). Самый быстрый способ найти лампочку - это прокрутить верхнюю часть исходного файла и щелкнуть на любой зеленой кривой, отображаемой под оператором #include.

Когда папка открыта, расширение пытается найти системные заголовки на основе вашей операционной системы, но не знает ни о каких других библиотеках, от которых зависит ваш проект. Вы можете навести курсор на зеленые загогулины или открыть окно «Проблемы», чтобы понять, какие заголовки механизм IntelliSense не может открыть - иногда это не могут быть найдены зависимые заголовки.

Как указать пути включения?

Вы можете указать оставшиеся пути, используя один из методов, описанных ниже.

1. Используйте файл compile_commands.json для предоставления includePaths и определения информации

Расширение может получить информацию для"includePath" а также"defines" из файла compile_commands.json, который может быть автоматически сгенерирован многими системами сборки, такими как CMake и Ninja. Найдите раздел, в котором определена текущая конфигурация (по умолчанию для каждой ОС существует одна конфигурация, например, «Win32 или« Mac »), и установите"compileCommands" недвижимость вc_cpp_properties.json полный путь к файлу compile_commands.json, и расширение будет использовать его вместо"includes" а также"defines" свойства для IntelliSense.

2. Используйте предложения лампочки для автоматического разрешения includePath

Первое, что нужно попробовать, - это использовать подсказки пути лампочки для автоматического разрешения включаемых путей. Когда вы открываете папку, расширение будетрекурсивно поиск возможных путей включения, соответствующих заголовочным файлам, которые использует ваш код, на основе путей, заданных"browse.path" установка вc_cpp_properties.json, Нажмите на зеленые загогулины под заявлениями #include, и вы увидите лампочку, предлагающую пути, которые позволят IntelliSense разрешить включенный файл.

Если вы не видите подсказки пути в лампочке, попробуйте добавить корневую папку, в которой заголовки, вероятно, расположены в"browse.path" установка вc_cpp_properties.json, Это позволяет расширениюрекурсивно искать в этих папках и предлагать больше предложений в лампочке по мере продолжения поиска.

3. Вручную добавить пути включения

Если ни один из приведенных выше способов полностью не разрешает пути, вы можете вручную указать пути к заголовкам, от которых зависит ваш проект, вc_cpp_properties.json файл. Найдите раздел, в котором определена текущая конфигурация (по умолчанию для каждой ОС есть одна конфигурация, например, «Win32 или« Mac »), и добавьте ваши пути в"includePath" установка и определяет в"defines" установка. Например, на следующем снимке экрана показан фрагмент файла с указанием пути для конфигурации Mac.

Кроме того, для MinGW,как объясняет документация расширения ты можешь спроситьGCC / G ++ перечислить свои собственные включаемые файлы:

gcc -v -E -x c++ nul

Убедитесь, что пути включения правильно разрешены

Есть два способа проверить правильность разрешения путей включения:

Зеленые загогулины в исходном файле больше не отображаютсяСообщения об ошибках очищаются в окне «Проблемы».

Это указывает на то, что в движке IntelliSense разрешены пути включения, поэтому вы можете начать пользоваться полным IntelliSense для своего кода C или C ++ для текущего модуля перевода. Обратите внимание, что вы все равно можете видеть ошибки в других файлах, если они принадлежат другому модулю перевода, для которого требуется настроить дополнительные пути включения.

Если это не помогло решить проблему, проверьте приведенную ниже конфигурацию MinGW и попробуйте установить подходящее место для вашей установки Cygwin для соответствующих / похожих заголовочных файлов и папок.

Настройка MinGW

c_cpp_properties.json справочное руководство

 Shihab Shahriar18 февр. 2018 г., 16:39
Вы просто скопировали / вставили официальный документ, не так ли?
 Shihab Shahriar19 февр. 2018 г., 05:15
Извините, это была моя ошибка. Но вы действительно думаете, что достаточно признать источник? что нет ничего плохого в этом виде копирования / вставки?
 Sushant Chaudhary19 февр. 2018 г., 06:21
Я сам участвовал в разработке этого расширения C / C ++ для VSCode, поэтому, я думаю, я заслуживаю этого права по крайней мере копировать, редактировать и публиковать часть документации для тех, кто может в ней нуждаться и не иметь представление об этом. Плюс, я также связал оригинальные источники в конце.
 Sushant Chaudhary19 февр. 2018 г., 00:17
Разве вы не видели первый текст моего ответа?
 Pharap04 июл. 2018 г., 10:25
@ShihabShahriar Строго говоря, исходный репозиторий находится под лицензией MIT, поэтому, вероятно, документация тоже есть, что может означать, что этот ответ также под лицензией MIT.

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

Ниже вы можете видеть, что путь включения MinGW C ++ был добавлен в browse.path для Windows:

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

Надеюсь, это поможет! :)

 Niko P.18 сент. 2017 г., 03:02
У меня установлен Cygwin, вы знаете, какой код будет для этого?
 Rivasa19 дек. 2018 г., 18:57
Спасибо!
 Niko P.18 сент. 2017 г., 03:06
Также, когда я вставляю любой код, отличный от исходного кода, он выдает ошибку «Не удалось разобрать» e: \\. Vscode \ c_cpp_properties.json ": неожиданный токен] в JSON в позиции 1896"

Ваш ответ на вопрос