# Настройка Visual Studio Code

VSCode представляет собой достаточно продвинутый текстовый редактор, поддерживающий большой набор расширений. Расширения позволяют добавить подсветку синтаксиса, визуальные элементы на панели самого VSCode для упрощения процесса сборки и запуска и пр. Подробнее про систему расширений для C/C++: <https://code.visualstudio.com/docs/languages/cpp>

Для добавления виджетов для запуска и подсветки синтаксиса языка можно поставить набор расширений [C/C++ Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack)

Для настрйоки автоматического применения clang-format можно установить [Clang-Format extension](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) и дополнительно в настройках VSCode установить опцию `Editor: Format On Save` с `Files: Auto save` (наспример, `on FocusChange`). Не забудьте указать путь до исполняемого файла `clang-format`.

Также рекомендуется установить [`clangd`](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd). Подробнее: <https://clangd.llvm.org/installation>

⚠️ Ни одно из расширений не будет устанавливать компилятор или отладчик, их необходимо устанавливать отдельно.

При разработке крайне рекомендуется открывать директорию (`File - Open folder`), и только после этого приступать к созданию файлов проекта и разработке. Таким образом вы получите при открытии терминала сразу нахождение в ожидаемой директории (рабочей директории), а также все настройки в рамках текущего Workspace.

***

После установки и открытия любой директории с C/C++ файлами будет наблюдаться следующая картина

<figure><img src="/files/CJxIjRP2LdLdIYxnTraY" alt=""><figcaption></figcaption></figure>

Справа сверху появилась новая кнопка для упрощённого запуска, а слева наблюдается появление директории с файлами настроек расширениий.

***

Содержимое `.vscode`:

1️⃣ [`c_cpp_properties.json`](https://code.visualstudio.com/docs/cpp/customize-cpp-settings) – указать путь до предпочитаемого компилятора. Дополнительно можно поменять версию стандарта и добавить опции сборки.

Пример:

```json
{
  "configurations": [
    {
      "name": "Win64",
      "compilerPath": "clang.exe",
      "intelliSenseMode": "windows-clang-x64",
      "cStandard": "c17",
      "cppStandard": "c++23",
      "includePath": ["${workspaceFolder}/include"],
      "defines": ["DEBUG", "MY_FEATURE=1", "_CRT_SECURE_NO_WARNINGS"],
      "browse": {
        "path": ["${myIncludePath}", "${workspaceFolder}"]
      }
    }
  ],
  "version": 4
}
```

В примере указаны:

* директории заголовочных файлов для статического анализатора VSCode;
* пользовательские макросы, которые будут указываться при сборке;
* путь до компилятора;
* стандарт языка.

2️⃣ [`settings.json`](https://code.visualstudio.com/docs/configure/settings) – настройки расширений по умолчанию (Workspace settings).

Пример:

```json
{
    "C_Cpp.errorSquiggles": "disabled",
    "C_Cpp.default.intelliSenseMode": "windows-clang-x64",
    "C_Cpp.default.cppStandard": "c++23",
    "C_Cpp.default.cStandard": "c23",
    "C_Cpp.default.mergeConfigurations": true
}
```

3️⃣ `tasks.json` – настройка команд сборки программ и библиотек (build instructions).

Задачи типа `build` отрабатывают при `Ctrl + Shift + B` или через Command Palette.

Пример:

```json
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang.exe build active file",
            "command": "C:\\Program Files\\LLVM\\bin\\clang.exe",
            "args": [
                "*.c",
                "-std=c23",
                "-g",
                "-o",
                "${workspaceFolder}/a.exe"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}
```

В примере приведена задача на сборку исполняемого файла с сохранением отладочной информации из открытого в VSCode файла с исходным кодом.

4️⃣ [`launch.json`](https://code.visualstudio.com/docs/cpp/launch-json-reference) – настройка запуска исполняемых файлов, включая настройки для отладки кода (debugger settings).

Задачи типа `launch` отрабатывают при `Ctrl + Shift + D` или через Command Palette.

Пример:

```json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "lldb-dap",
            "request": "launch",
            "program": "${workspaceFolder}/a.exe",
            "args": [],
            "cwd": "${workspaceFolder}",
            "console": "externalTerminal"
        },
    ]
}
```

В примере приведена настройка для отладки с использованием [`lldb-dap`](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.lldb-dap) – адаптера отладки от LLVM.

Для работы расширения `lldb-dap` необходимо указать в настройках `Lldb-dap: Executable-path` указать путь до `lldb-dap` (ставится вместе с `LLVM clang`).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://skkv-itmo.gitbook.io/c-cpp-cookies/environments/ide/visual-studio-code/setup-visual-studio-code.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
