Используйте рекомендацию подключаемого модуля Zhibei-024-vscode и автоматическое завершение кода C.
Используйте рекомендацию подключаемого модуля Zhibei-024-vscode и автоматическое завершение кода C.

vscode — текстовый редактор с открытым исходным кодом, разработанный Microsoft на основе электронных технологий. Благодаря своим превосходным кроссплатформенным свойствам и богатой экосистеме плагинов vscode в настоящее время стал самым популярным текстовым редактором.

Оригинальный LSP (протокол языкового сервера) от vscode привнес новые идеи в последующее процветание экосистемы редактора.

1. Рекомендации по плагину

  • C/C++ IntelliSense: подключаемый модуль приглашения кода C (выберите один из двух)
  • Clangd: плагин подсказки кода C (выберите один из двух)
  • Пакет китайского (упрощенного) языка: пакет упрощенного китайского языка.
  • Инструменты CMake: плагин cmake
  • Crabviz: инструмент рисования графов вызовов кода для Rust.
  • IntelliCode: автозаполнение
  • Pylance: советы по синтаксису Python
  • Python: советы по синтаксису Python
  • Удаленный доступ – SSH: удаленное соединение WSL
  • WSL: плагин для подключения wsl
  • Rust-analyzer: подсказки по синтаксису ржавчины
  • ShellCheck: подсказки синтаксиса сценария оболочки
  • ТОНГИ Линма: Али Тонги Линма

2. Советы по коду C

vscode по умолчанию поддерживает подсказки синтаксиса c/c++, но вам необходимо установить плагин для поддержки подсветки синтаксиса c/c++. В настоящее время vscode имеет два основных плагина.

2.1. C/C++ IntelliSense

Официальный плагин IntelliSense для C/C++ от Microsoft поддерживает синтаксические подсказки, завершение кода, реконструкцию кода и другие функции. Ниже приведен пример конфигурации для вызова ClangTidy.

Язык кода:json
копировать
"C_Cpp.codeAnalysis.clangTidy.checks.enabled": [
    "google-*",
    "modernize-*",
    "performance-*",
    "clang-analyzer-*",
    "misc-*"
],
"C_Cpp.codeAnalysis.clangTidy.checks.disabled": [
    "modernize-macro-to-enum",
    "misc-include-cleaner"
],

ClangTidy — инструмент статического анализа кода.

2.2. Clangd

Clangd — это языковой сервер C/C++, который поддерживает синтаксические подсказки, завершение кода, реконструкцию кода и другие функции. Поскольку сам проект llvm быстро развивается, если вы хотите испытать последнюю стабильную версию Clangd, вы можете установить ее самостоятельно с официального сайта.

2.2.1 Настройте источник apt (на примере Ubuntu 20.04).
Язык кода:bash
копировать
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
cat > /etc/apt/sources.list.d/llvm-toolchin-focal-18.list << EOF
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
EOF
sudo apt update
sudo apt install clangd-18 llvm-18 clang-18

Только версии clangd выше 13.0.0 поддерживают параметр Enable-config. Соответствующая конфигурация vscode выглядит следующим образом:

Язык кода:json
копировать
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
    "-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
    "--enable-config",
    "--pretty",
    "--all-scopes-completion",
    "--cross-file-rename",
    // "--log=error",
    // "--completion-style=bundled",
    // "--header-insertion-decorators",
    // "--background-index",
    // "-j=5",
    // "--pch-storage=disk",
    // "--function-arg-placeholders=false",
    // "--compile-commands-dir=build",
    // "-header-insertion=never",
],
2.2.2 Если вы хотите использовать свою собственную версию, вы можете выполнить следующую команду.
Язык кода:bash
копировать
sudo apt install clangd llvm clang

Соответствующая конфигурация vscode выглядит следующим образом:

Язык кода:json
копировать
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
// Эквивалентно -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
    "-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
    "--pretty",
    "--clang-tidy",
    "--clang-tidy-checks=cppcoreguidelines-*,performance-*,modernize-,google-",
    "-j=5"
]
2.2.3. Описание файла конфигурации clangd.

Существуют интрузивные и неинтрузивные конфигурации clangd. Интрузивные означает создание файла .clangd в корневом каталоге проекта, а неинтрузивные — создание файла config.yaml в каталоге конфигурации системы.

расположение файла конфигурации clangd:

  • Система Linux: домашний каталог пользователя/.config/clangd/config.yaml.
  • Система Windows: C:\Users\имя_пользователя\AppData\Local\clangd\config.yaml

Содержание конфигурации следующее:

Язык кода:yaml
копировать
# clangd configuration file enable with --enable-config argument
# clangd required version upper 13.0.0
Index:
  Background: Build

CompileFlags:
  Add: [-xc, -Wall, -Wno-unused-function, -std=gnu99]
  Compiler: clang

Diagnostics:
  UnusedIncludes: None
  ClangTidy:
    Add: [
        "google-*",
        "modernize-*",
        "performance-*",
        "clang-analyzer-*",
        "misc-*"
    ]
    Remove: [
        modernize-macro-to-enum
      ]

3. Справочные документы

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.