Перейти к содержимому

Как в visual studio писать на си

  • автор:

Как писать на Си в Microsoft Visual Studio? [закрыт]

Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

Закрыт 6 лет назад .

Как можно писать на Си в Visual Studio? Плагина как такового нет. P.S. Знаю, что есть другие среды разработки, но нужна именно VS.

Отслеживать
67.9k 216 216 золотых знаков 77 77 серебряных знаков 219 219 бронзовых знаков
задан 13 дек 2016 в 19:00
115 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
А вы пробовали Visual Studio Code?
13 дек 2016 в 19:07
Просто брать и писать. В чем проблема?
13 дек 2016 в 19:41
24 ноя 2018 в 9:17

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Есть две возможности. Первая это в свойствах проекта выбрать пункт C/C++. В раскрывшемся подменю выбрать пункт «Дополнительно», а затем на правой панели в пункте «Компилировать как» выбрать опцию «Компилировать как код C».

Вторая возможность — это создать в каталоге, где вы хотите иметь свой проект пустышку с расширением .c , а затем при создании проекта выберите пункт «создание проекта из существующего проекта».

Это все я давным-давно описал на своем форуме в первой же теме Компиляция С программы в Microsoft VS 2010

Отслеживать
ответ дан 13 дек 2016 в 20:03
Vlad from Moscow Vlad from Moscow
44.8k 3 3 золотых знака 38 38 серебряных знаков 89 89 бронзовых знаков

Ну, поскольку я предпочитаю работу в командной строке, то скажу о ней — в ней по умолчанию компилятор трактует исходники с расширением .c как текст на C, и компилирует соответственно. Но есть еще и ключики /Tc — компилировать file как файл на языке C, и /TC — компилировать как C все файлы.

Отслеживать
ответ дан 14 дек 2016 в 3:48
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков

  • c
  • visual-studio
    Важное на Мете
Похожие

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Среды разработки для С

Одной из распространенных сред разработки для программирования на Windows является Visual Studio . В данном случае мы будем использовать бесплатную и полнофункциональную среду Visual Studio 2019 Community, которую можно найти по адресу https://visualstudio.microsoft.com/ru/vs/community/.

После загрузки и запуска установщика Visual Studio в нем необходимо отметить пункт Разработка классических приложений на C++ :

Установка С++ в Visual Studio

Выбрав все необходимые пункты, нажмем ОК для запуска установки. После установки Visual Studio создадим первый проект. Для этого откроем Visual Studio. На стартовом экране выберем тип Empty Project для языка C++:

Первый проект на Си в Visual Studio

На следующем экране в поле для имени проекта дадим проекту имя HelloApp и также можно указать расположение проекта. И затем нажмем на Create для создания проекта.

Первый проект на Си в Visual Studio

После этого Visual Studio создаст пустой проект. Добавим в него текстовый файл для набора исходного кода. Для этого в окне Solution Explorer (Обозреватель решений) нажмем правой кнопкой мыши на узел Source Files и в контекстом меню выберем Add -> New Item. :

Добавление файла на Си в Visual Studio

Затем нам откроется окно для добавления нового элемента:

Добавление исходного файла на Си в Visual Studio

Здесь нам надо выбрать пункт C++ File(.cpp) , а внизу окна укажем для файла имя hello.c . Как правило, исходные файлы на Си имеют расширение .с . Оно указывает, что этот файл содержит исходный код на языке С, и он будет обрабатываться соответствующим компилятором.

Настройка проекта

После добавления файла изменим опции проекта. Для этого перейдем к пункту меню Project -> Properties

Свойства проекта на Си в Visual Studio

В окне свойств проекта в левой части перейдем к секции С/С++ и далее к пункту Advanced :

Установка компилятора для языка Си в VS

В правой части окна для поля Compile As установим значение Compile as C Code (/TC) . Тем самым мы говорим, чтобы по умолчанию исходный код компилировался именно как код С, а не С++.

После установки этого значения нажмем на кнопку «Применить», чтобы новые настройки конфигурации вступили в силу.

Для работы с языком Си может быть полезна еще одна настройка — установка стандарта языка. Перейдем к пункту С/С++ -> Language . Здесь в поле C Language Standard мы можем установить один из доступных стандартов для языка Си, который будет применяться для компиляции:

Настройка стандарта языка Си в Visual Studio

Правда, в данном случае он не играет значения, поэтому оставим для этого параметра настройку по умолчанию.

Определение кода программы

После добавления файла >hello.c проект будет иметь следующую структуру:

Структура проекта на Си в Visual Studio

Вкратце пробежимся по этой структуре. Окно Solution Explorer содержит в решение. В данном случае оно называется HelloApp. Решение может содержать несколько проектов. По умолчанию у нас один проект, который имеет то же имя — HelloApp. В проекте есть ряд узлов:

  • External Dependencies : отображает файлы, которые используются в файлах исходного кода, но не являются частью проекта
  • Header Files : предназначена для хранения заголовочных файлов с расширением .h
  • Resource Files : предназначена для хранения файлов ресурсов, например, изображений
  • Source Files : хранит файлы с исходным кодом

Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:

#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции

Здесь использован весь тот код, который был рассмотрен в предыдущих темах про компиляцию с помощью GCC.

Теперь запустим программу. Для этого в Visual Studio нажмем на сочетание клавиш Ctrl+F5 или выберем пункт меню Debug -> Start Without Debugging :

Запуск программы на Си в Visual Studio

И в итоге Visual Studio передаст исходный код компилятору, который скомпилирует из кода исполняемый файл exe, который потом будет запущен на выполнение. И мы увидим на запущенной консоли наше сообщение:

Первое приложение на языке программирования Си

Затем в проекте в папке x64/Debug мы можем увидеть скомпилированный файл exe, который мы можем запускать независимо от Visual Studio:

Компиляция кода на языке программирования Си

В данном случае файл HelloApp.exe как раз и представляет скомпилированный исполняемый файл.

Как писать на C в Visual Studio 2017?

Как установить язык C в Visual Studio 2017?
Нужен именно C, а не C++ или C#. При установке просто нет обычного C.

5bf6bcb83043f442592461.png

  • Вопрос задан более трёх лет назад
  • 8555 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 2

5cb5cbbbab063292149329.png

А что делать,если в настройках все изменила, но после сборки выдает такую ошибку?

Ответ написан более трёх лет назад
Нравится 1 2 комментария

Привет!
Могу дать парочку советов о том, как писать в VS на си. (испытал уже на себе).
1) Создаете пустой проект (не файл , а именно проект)
2) Справа в обозревателе решений в папку *Исходные файлы* (Source files) создаете файл срр нажатием правой кнопки мыши.
3) пишите в самом начале код #define _CRT_SECURE_NO_WARNINGS ( отключит оповещения об *небезопасном* использовании printf, scanf и тп.)
4) обязательно подключайте библиотеку stdio.h
5) вместо привычной задержки консоли getch() используйте _getche()

если есть еще вопросы, пишите arteezysolo@gmail.com (сам являюсь студентом, изучаю язык, если в чем-то ошибся хотелось бы узнать поподробнее=) )

На скриншоте видно, что вы создали ConsoleAplication, поэтому у вас ошибка.
Попробуйте создать проект и посмотрите на изменения.

Русские Блоги

Как писать и запускать программы на C и C ++ в Visual Studio Code?

Как писать и запускать программы на C и C ++ в Visual Studio Code?

0. Предисловие

Эта статья для начинающих, и каждый шаг более подробный. Прочтите эту статью, чтобы узнать о командной строке, компиляции и отладке программ, а также об использовании VS Code. Если вы чувствуете затруднения в этой статье, я приведу упрощенную версию: установите расширения gcc и c / c ++, откройте папку, щелкните открытый исходный код, F1, создайте и отладьте активный файл и закончите.

Многие материалы этой статьи доступны в официальной документации VS Code:C++ programming with Visual Studio CodeОни также доступны в документации к каждому расширению, и они будут обновляться (эта статья также претерпела несколько серьезных обновлений). Если вы хотите узнать больше, вы можете пойти и посмотреть. Эта статья основана на многих попытках, если есть ошибки, вы можете указать.

Конечный результат: отображение ошибок, фрагментов кода, завершения, форматирования, а также компиляции и отладки одного файла в режиме реального времени на этапе компиляции.

1. Экологическая подготовка

Не буду много говорить об официальном сайте, загрузке и установке VSC. VSC — это просто текстредактор(редактор), а не IDE (интегрированная среда разработки), безпереводчик(компилятор) и многие другие функции, поэтому компилятор должен быть установлен сам по себе.

Скачайте компилятор:MinGW-w64 — for 32 and 64 bit WindowsПрокрутите немного вниз и выберите последнюю версию x86_64-posix-seh . самый лучшийНе используйте этоDownload Latest Version, Это онлайн-установочный пакет, возможно, его не удалось загрузить из-за внутреннего «сетевого окружения». Если загрузка браузера не удалась, переключитесь на Thunder или даже на точку доступа, открытую мобильным телефоном, и она не удалась, а затем используйте метод, который может получить доступ к Google.

«Установите» компилятор: следующий — сжатый пакет 7z. Если вы не можете распаковать, вы можете использовать Baidu «Как распаковать сжатый пакет». После декомпрессии положите его в такое место, которое будет нелегко удалить, а некоторые сложенные в стопку можно удалить. Будьте оптимистичны по поводу полного пути к папке bin. На моем рисунке C: \ mingw64 \ bin. Добавьте его в PATH в переменной окружения. Если вы не знаете этот шаг, см. «Б. Как добавить переменные среды» в конце этой статьи (на этой странице вы можете выполнить поиск с помощью Ctrl + F).

Для Debian Linux sudo apt update; sudo apt install build-essential Вот и все.

Порядок не важен, путь может быть другим, в любом случае убедитесь, что gcc.exe находится в этой папке.

проверка

Нажмите Win + R, запустите cmd (не пропускайте этот шаг), введите gcc, должен появиться запросno input filesВместо того, чтобы «не внутренняя команда или внешняя команда» или «не может распознать элемент« gcc »как имя командлета, функции, файла сценария или исполняемой программы». Если это «не внутренняя команда или внешняя команда», это означает, что папка, в которой находится gcc, не находится в пути переменной среды, и ее необходимо добавить. Если это не так, перезапустите его. Если он не работает после перезапуска, значит, проблема с вашей собственной работой.

терять gcc -v Версия gcc может отображаться. Если отображаемая версия совпадает с той, которую вы только что загрузилиДругой / старше, Что указывает на то, что в Path была старая версия компилятора, которая могла быть установлена ​​в других IDE. Вам нужно удалить исходный путь gcc в Path.

Эти две проверкиДолжны встретиться, В противном случае вы должны изменить переменные среды. Быть остороженНе удаляйте по ошибкеВверх.

Не беспокойтесь о лязге, он должен пойти не так. Учебник по clang перемещен в конец статьи

Введите последнюю строку вывода gcc -v. Версия должна соответствовать вашей, например x86_64 и seh для 64-битной

Установить расширение (расширение)

  • C / C ++: также известный как cpptools, предоставляет функции отладки и форматирования.
  • Code Runner: щелкните правой кнопкой мыши, чтобы скомпилировать и запустить один файл, что очень удобно; но не может Dubug

Другие дополнительные расширения:

  • Bracket Pair Colorizer 2: фигурные скобки радуги
  • One Dark Pro: наверное, самая популярная тема VS Code

Расширения не рекомендуются / не требуются:

  • GBKtoUTF8: конвертировать документы в кодировке GBK в кодировку UTF8. Это расширение давно не обновлялось, могут быть серьезные баги
  • C ++ Intellisense: используются теги gtags, первая версия этой статьи. Эффект очень общий
  • Включить автозаполнение: обеспечивает завершение имени файла заголовка.Теперь cpptools и vscode-clangd уже имеют эту функцию, поэтому нет необходимости ее устанавливать.
  • C / C ++ Snippets: Snippets предназначены для повторного использования блоков кода, эффект — Baidu; хотя это расширение имеет большой объем установки, но лично я считаю, что оно не очень полезно, cpptools и clangd также поставляются с некоторыми; вы также можете выбрать другие расширения Snippets или даже определить свои собственные

Дополнительные знания

  • Компилятор превращает исходный код в исполняемый файл, а редактор — это набираемое вами программное обеспечение. Блокнот — это редактор, и VSC также является редактором.Редактор не может скомпилировать и запустить программуПотому что это работа компилятора
  • MinGW — это порт gcc под Windows, а gcc — самая популярная комбинация компиляторов C / C ++ в мире. Но имя gcc также относится к программе, которая компилирует язык C, а g ++ — это компилятор C ++. То есть программа gcc и программа g ++ включены в набор gcc и MinGW. Когда вы говорите только о gcc, вы должны различать себя в зависимости от контекста.
  • На самом деле MinGW и MinGW-w64 похожи на имена, это два разных проекта. Для удобства MinGW в этой статье относится к MinGW-w64. Сам MinGW давно не обновлялся, не пользуюсь О, оказывается, MinGW жив, но может генерировать только 32-битные программы
  • Расширение — это расширение, плагин — это плагин, а VSC использует прежнее имя. Большинство статей смешивают эти два понятия, не строго, но понятно, и учат улавливать основные противоречия. Конечно, все, что используется в этой статье, верное
  • Дополнительное чтение:[Оригинал] [Наука] MinGW против MinGW-W64 и других、What is difference between sjlj vs dwarf vs seh?

2. Настройте несколько файлов .json.

Создайте папку, в которой вы планируете хранить код, которая называется папкой рабочей области;Путь не может содержать китайский язык и кавычки., Лучше не иметь пробелов, я использую C:\VS-Code-C . C и C ++ необходимо создавать отдельные папки, если не используется виртуальная рабочая область. Не выбирайте папку, созданную в предыдущем абзаце, исходный код и компилятор нужно открывать отдельно.

Открыть VSC,Выберите открытую папку; Лучше не выбирать «Добавить папку рабочего пространства», это виртуальное рабочее пространство, я не использовал его раньше, и нет гарантии, что все будет хорошо. Нажмите New Folder, имя .vscode . Причина, по которой он не создается в управлении ресурсами, заключается в том, что первый символ папки, созданной проводником Windows, не может быть точкой (поддерживается после 1903 года). Затем создайте launch.json, tasks.json, settings.json (Не setting.json) КПапка .vscode. Изображение эффекта:

Он должен быть в .vscode, не становиться параллельным

Содержимое этих файлов показано ниже. После копирования следующего кода Zhihu автоматически добавит несколько строк слов со всеми правами впереди, которые необходимо удалить при фактическом использовании. Некоторые места изменять необязательно, пожалуйста, проверьте примечания сами. Примечание. Если вы пишете на C ++, необходимо изменить место в tasks.json.

код launch.json

externalConsoleВы можете изменить его в соответствии с вашими предпочтениями; cwd может быть относительным путем, когда программа работает, и может быть изменен при необходимости$ (Благодарность

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

// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md < "version": "0.2.0", "configurations": [< "name": "(gdb) Launch", // Имя конфигурации будет отображаться в выпадающем меню конфигурации запуска "type": "cppdbg", // Тип конфигурации, cppdbg соответствует функции отладки, предоставляемой cpptools; можно считать, что это может быть только cppdbg "request": "launch", // Тип конфигурации запроса, который может быть запуском (запуском) или присоединением (присоединением) "program": "$ / $ .exe", // путь к отлаживаемой программе "args": [], // Параметры командной строки, передаваемые программе во время отладки программы, обычно пустые "stopAtEntry": false, // Если установлено значение true, программа остановится при входе в программу, что эквивалентно нарушению точки на главном "cwd": "$ ", // Рабочий каталог при отладке программы, это папка рабочей области; измените значение на $ , чтобы перейти в каталог, в котором находится файл "environment": [], // переменные среды "externalConsole": true, // Использовать отдельное окно cmd, когда истинно, что согласуется с другими IDE; после 18 октября установите значение false, чтобы вызвать встроенный терминал VSC "internalConsoleOptions": "neverOpen", // Если он не установлен в neverOpen, при отладке он перейдет на вкладку "Debug Console". Вам не нужно вручную вводить команды в gdb, верно? "MIMode": "gdb", // Укажите подключенный отладчик, который может быть gdb или lldb. Но я не пробовал lldb "miDebuggerPath": "gdb.exe", // Путь отладчика, суффикс нельзя опускать под Windows, а не под Linux "setupCommands": [ ], "preLaunchTask": "Compile" // Задача, выполняемая перед началом сеанса отладки, обычно это скомпилированная программа. Соответствует ярлыку tasks.json >] >

код tasks.json

еслиНаписание C ++, Компилятор необходимо изменить на g ++; если вам не нужны дополнительные предупреждения, удалите элемент -Wall; -std измените в соответствии с вашими потребностями; в Linux вам не нужно добавлять -fexec-charset. В любом случае, я добавил к ним комментарии, но я все еще не понимаю, руководство по Baidu gcc.

Открывать контролирует, следует ли переходить на панель терминала во время компиляции. Вы можете изменить его в соответствии с вашими предпочтениями; даже если для него установлено значение «Никогда», он просто не переходит автоматически, и вы все равно можете увидеть информацию, если щелкнете вручную.

// https://code.visualstudio.com/docs/editor/tasks < "version": "2.0.0", "tasks": [< "label": "Compile", // имя задачи, соответствующее preLaunchTask в launch.json "command": "gcc", // Используемый компилятор, C ++ использует g ++ "args": [ "$", "-o", // Укажите имя выходного файла, если этот параметр не добавлен, по умолчанию выводится a.exe, по умолчанию a.out под Linux "$/$.exe", "-g", // Создание и отладка связанной информации "-Wall", // Включить дополнительные предупреждения "-static-libgcc", // статическая ссылка libgcc, обычно добавляется "-fexec-charset = GBK", // Сгенерированная программа использует кодировку GBK, не добавление этой приведет к искажению вывода на китайском языке под Win // "-std = c11", // Последний стандарт C ++ - c ++ 17, или измените его в соответствии с вашими потребностями ], // Скомпилированная команда фактически эквивалентна VSC, помогая вам потерять эти вещи в терминале "type": "process", // процесс заключается в том, что vsc передает все предопределенные переменные и экранирует непосредственно команду после синтаксического анализа; оболочка эквивалентна открытию оболочки и последующему вводу команды, поэтому аргументы будут анализироваться через оболочку "group": < "kind": "build", "isDefault": true // ctrl shift B будет выбран вручную, если он неверен >, "presentation": < "echo": true, "раскрыть": "всегда", // Переходить ли к панели терминала при выполнении задачи, это может быть всегда, тихо, никогда. Подробную информацию см. В документации VSC. "focus": false, // Установите значение true, чтобы сфокусироваться на терминале во время выполнения задачи, но для компиляции C / C ++ значение true не имеет значения "panel": "shared" // Информация о компиляции разных файлов разделяет панель терминала >, // "problemMatcher": "$ gcc" // Эта опция может фиксировать сообщение об ошибке в терминале при компиляции; но из-за Lint могут возникнуть двойные ошибки при открытии этого >] >

код settings.json

Поместите вещи из этого файла в «Пользовательские настройки», чтобы перезаписать глобальные настройки, в противном случае они будут эффективны только в текущей рабочей области. У каждого из этих двух пунктов есть свои преимущества.

Командная строка Code Runner и некоторые параметры могут быть изменены здесь в соответствии с вашими потребностями. Если вы хотите настроить или узнать, что это означает, обратитесь к документации этого расширения и руководству по использованию Baidu gcc. Если в терминале используется cmd (Win7По умолчанию) необходимо закомментировать или поставить terminal.integrated.shell.windows Измените на PowerShell; Win10 по умолчанию использует PS, не меняя его.

Упомянутые SnippetSuggestions; но иногда использование top все еще немного проблематично, поэтому измените значение на optional.

< "files.defaultLanguage": "c", // ctrl + N язык по умолчанию после создания нового файла "editor.formatOnType": true, // автоматически форматирует текущую строку кода после ввода точки с запятой (идентификатор конца инструкции C / C ++) "editor.suggest.snippetsPreventQuickSuggestions": false, // у фрагментов clangd много точек перехода, вы должны вручную запускать Intellisense без этого "editor.acceptSuggestionOnEnter": "off", // Моя личная привычка, когда вы нажимаете Enter, это должен быть реальный перевод строки, только вкладка будет принимать Intellisense // "editor.snippetSuggestions": "top", // (необязательно) фрагменты отображаются вверху списка завершения, по умолчанию - встроенный "code-runner.runInTerminal": true, // Если установлено значение false, он будет выведен в "output" и не может быть введен "code-runner.executorMap": < "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'", "cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'" // "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && $dir$fileNameWithoutExt", // "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && $dir$fileNameWithoutExt" >, // Команда, запускаемая при щелчке правой кнопкой мыши по коду запуска; раскомментированное применимо только к PowerShell (по умолчанию Win10), имя файла с пробелами также может быть скомпилировано и запущено; закомментированное применяется к cmd (по умолчанию win7), PS и bash также могут Используется, но не может работать, если в имени файла есть пробелы "code-runner.saveFileBeforeRun": true, // сохранить перед запуском кода "code-runner.preserveFocus": true, // Если false, курсор будет фокусироваться на терминале после выполнения кода. Если вам нужно часто вводить данные, вы можете установить для него значение false "code-runner.clearPreviousOutput": false, // Очистить сообщение терминала, принадлежащее средству выполнения кода, перед каждым кодом запуска, по умолчанию - false "code-runner.ignoreSelection": true, // По умолчанию false, эффект состоит в том, что мышь может выбрать фрагмент кода, и он может быть выполнен отдельно, но C является компилируемым языком и не подходит для этого использования "C_Cpp.clang_format_sortIncludes": true, // настраиваем порядок включения во время форматирования (в алфавитном порядке) >

c_cpp_properties.json

Если вы уверены, что вам не нужно использовать чужие библиотеки, текущая версия (после 0.18.0)Нет необходимости создавать этот файл, Cpptools автоматически использует настройки по умолчанию. Итак, эта статья не включает конфигурацию этого файла.

Если вы пишете файл заголовка самостоятельно, а не в workspaceFolder, или используете чужую библиотеку, вам необходимо вручную создать этот файл и поместить его в .vscode Вниз. Шаблон может относиться к:Microsoft/vscode-cpptools。

Некоторый прошлый опыт:

  • Путь к библиотеке следует добавить в includePath и просмотреть
  • Если вам нужно включить рекурсивно, добавьте в конце /** 。
  • Этот json не допускает комментариев, фактически, согласно стандарту json, он не может иметь
  • Кажется, что compilerPath должен быть полным путем к MinGW с точностью до gcc.exe, в противном случае он сообщит, что файл заголовка не может быть найден; в Linux это / usr / bin / gcc; но я давно не тестировал его.
  • Разделителем каталогов в Windows является обратная косая черта, изначально ее следует экранировать двумя обратными косыми чертами, но здесь также допускаются прямые косые черты.
  • Помимо настройки этого файла требуются другие операции. Отчасти это может относиться к следующей «многофайловой компиляции»

Дополнительные знания

json — это формат обмена данными, в основном подмножество JavaScript теперь является полным подмножеством. Здесь используется какКонфигурацияфайл. VSC и различные расширения будут читать записи в json, чтобы определять определенные функции и поведение.

Откуда столько записей? Это действительно похоже на API. Разработчик расширения «сообщит» VSC о параметрах, позволяющих изменять, и будет написана страница установки каждого расширения. Как пользователь, VSC будет подсказывать вам, что доступно при наборе текста, так что писать на самом деле легко.

Зачем писать так много всего на json? Поскольку сам VSC не уделяет особого внимания языку C, то же самое и для многих других языков. И самая критическая команда компиляции не имеет отношения к VSC, это дело редактора и компилятора, о которых говорилось выше. VSC не несет ответственности, не может и не может компилировать язык C.

Переменные, начинающиеся с $, являются предопределенными переменными VSC, см.:Variables Reference. Например, $ file будет заменено именем текущего открытого файла, когда он действительно запущен.

3. Написать код, скомпилировать, отладить

После создания нового файла вы можете написать код. Суффикс исходного кода языка C — .c, а суффикс C ++ — .cpp, .C или .cxx (я тоже этому учу . ). Файлы кода можно сохранять в рабочей области, и вы можете создавать папки самостоятельно,Не нужно помещать в папку .vscode, ноНе включайте китайский язык и кавычки в путь (включая имя файла), Лучше не иметь пробелов. В основном многие символы являются допустимым синтаксисом оболочки, иначе попытаться удалить файл с именем -rf с помощью rm под Linux? Я не могу написать это, если не проверил.

Нажмите Alt + Shift + F (или используйте контекстное меню), чтобы отформатировать код, когда появится Intellisense.Нажмите вкладку, чтобы завершить код. Когда вы вводите фрагменты, будет несколько точек перехода, нажмите вкладку, чтобы перейти к следующему.

После того, как вы перестанете печатать на короткий промежуток времени (одну секунду), появится Lint. Расширение выдаст некоторые наводящие на размышления предупреждения (например, объявление переменной, но не ее использование), просто знайте это сами. Если вы чувствуете дискомфорт, есть способы предотвратить его появление, например, удаление -Wall уменьшит его. Если вы хотите удалить больше предупреждений, напомню: -Wno -. Вы можете использовать его после нахождения параметров #pragma GCC diagnostic ignored Или добавьте его в различные флаги. Короче говоря, исследуйте самостоятельно.

Далее поговорим об операции. Во-первых, компиляция — это процесс создания исполняемых файлов из исходного кода. А отладка — это, по сути, особый вид операции, средство для контроля работы программы и облегчения ее последующего изменения. Это два разных этапа: может случиться так, что компиляция пройдет, но отладка не удастся, или прямая компиляция не удастся, или компиляция завершится ошибкой до ее запуска. Если вы просто скажете «сбой при запуске», другие не смогут увидеть, на какой стадии возникла проблема. Если вы уверены, что определенный этап пройден, вы можете сосредоточиться на решении проблем других этапов, не беспокоясь об этом этапе.

Нажмите Ctrl + Shift + B, чтобы просто скомпилировать, нажмите F5, чтобы скомпилировать и отладить; изначально ctrl + F5 должен запускаться, но не отлаживать, но теперь cpptools не поддерживает его, он все равно будет отлаживаться. Следить:Support «Run without debugging» · Issue #1201 · microsoft/vscode-cpptools

На ранних этапах программирования настоятельно рекомендуюНе используйте f5 в качестве компилятора, Потому что некоторые ошибки вызывают только предупреждения и не препятствуют компиляции, но чем раньше эти ошибки будут устранены, тем лучше. Информация о компиляции будет находиться на панели «Терминал» внизу. Если в коде есть ошибка, щелкните здесь, чтобы просмотреть информацию, сообщаемую компилятором; но благодаря Lint обычные ошибки можно найти и немедленно исправить, что упрощает написание кода.

Чтобы добавить точку останова, просто щелкните перед номером столбца, щелкните правой кнопкой мыши, чтобы добавить условные точки останова. Если вы хотите остановиться с самого начала, вы можете добавить это в основную функцию илиlaunch.jsonЕсть настройка в. После начала отладки нажмите f11, чтобы продолжить шаг за шагом, строка кода, указанная стрелкой, будетКод для следующего запуска; F5 выполняется до следующей точки останова, щелкните правой кнопкой мыши строку кода, чтобы выбрать выполнение до указанной строки.

Слева есть панель отладки, вы можете видеть значение переменной, и вы можете добавить ее вручную, если у вас ее нет на автоматической панели: выберите выражение, которое вы хотите отслеживать, в коде, щелкните правой кнопкой мыши, чтобы иметь возможность напрямую добавить его в Watch, и вам нужно только вручную ввести сложные. Наведите указатель мыши на переменную, чтобы увидеть значение переменной, но можно распознать только простые выражения. Фреймы стека полезны для наблюдения за рекурсией. В случае переполнения стека и segfault вы также можете захватить «исключение» и автоматически перейти к строке, где произошла ошибка.

В частности, для массивов: массивы на языке C будут вырождаться в указатели после передачи через функции. Вы можете увидеть только первый элемент, напрямую добавив выражения. В это время его можно принудительно преобразовать в указатель на массив фиксированного размера, а затем разыменовать: например int arr[10] После передачи в функцию он становится int* arr , Добавить в часы *(int(*)[10])arr , Итак, вы можете увидеть весь массив. Но длина должна быть трудной для записи, будьте осторожны, чтобы не пересечь границу. Или простая программа всегда может увидеть это с массивом глобальных переменных. Другой способ записи, действительный только для gdb, а не void *: *arr@10 。

горячая клавиша:Vscode: общие сочетания клавиш для Visual Studio Code-Zhiwen Studio. Конечно, в документе на английском языке есть инструкции по использованию сочетаний клавиш, можно просмотреть Cheet Sheet и обновить документ на английском языке. Это указано отдельно только для начинающих.

Если вы столкнулись с ошибками, сначала просмотрите «некоторые возможные ошибки» ниже и просмотрите раздел комментариев.

Code Runner

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

Нажмите Ctrl + C в терминале, чтобы завершить программу, и вы должны убедиться, что текущая программа была завершена до следующего запуска (то же самое верно для задач). Если вы хотите скопировать, просто нажмите правую кнопку после выбора содержимого; чтобы вставить, нажмите правую кнопку, когда он не выбран; эта операция ограничена Win10, ctrl + c также может быть скопировано, но программа может быть остановлена ​​случайно.

Его также можно использовать для компиляции и запуска программ в нерабочей области, но по умолчанию используется gcc, если в глобальных настройках не указан executeorMap. Согласно моей конфигурации, есть еще одно различие между задачей и Code Runner: рабочий каталог. Первая — это открытая вами папка, а вторая — это папка, в которой находится файл. Конечно, все они могут быть изменены сами по себе.

Фактически, Code Runner просто заменяет вам вводимые вручную команды., Функция не сильная, ее можно рассматривать как разные применимые сценарии. Не думайте, что запустить Hello World с кодом запуска легко, Code Runner очень силен, а все предыдущие конфигурации — мусор.

Кроме того, Хан Цзюнь, респондент внизу, является автором этого расширения, и он ищет все (комичное).

Мультифайловая компиляция

Если вы хотите выполнить небольшой объем многофайловой компиляции, используйте язык C напрямую исходный файл gcc 1.c исходный файл 2.c заголовочный файл 1.h Это нормально, C ++ использует g ++. A.exe создается по умолчанию, и можно добавить -o, чтобы указать имя выходного файла, а остальные параметры — это руководство по Baidu gcc. Если вам нужно скомпилировать несколько раз, вы можете написать пакет.

Если вы хотите выполнять многофайловую компиляцию, узнайте, как написать make-файл или использовать cmake. Затем измените команды задач на вызов make и так далее.

Если вы хотите использовать чужие библиотеки, например ffmpeg, вам может потребоваться указать в команде -I 、 -l (Строчная L), -L . Чтобы узнать о конкретных параметрах, прочтите документацию к этой библиотеке. Вам также может потребоваться добавить путь к c_cpp_properties.json для настройки Intellisense.

В этих случаях рассмотрите возможность создания отдельного рабочего пространства вместо совместного использования его при однофайловой компиляции. Фактически, это не способствует использованию и пониманию в будущем больших IDE, которые можно отлаживать, не создавая новый проект и не создавая только один файл. Но новичкам не нужно так много осваивать. Не думайте, что создание проекта — это хлопотно, и вы можете очень хорошо скомпилировать, не создавая проект.

Короче говоря, они не имеют ничего общего с VSC, и вы столкнетесь с аналогичными проблемами с другими IDE или ручной компиляцией, что также немного сложно. В этой статье мы не будем обсуждать эти вопросы, решите сами.

Сохранить папку

послеДля написания кода необходимо открыть папку, созданную ранее.Может писать, иначе весь Intellisense будет недоступен, его может использовать только Code Runner. (В основном необходимы четыре файла json, и вы также можете использовать те файлы json, которые необходимо скопировать для создания других папок)

Вы можете создать ярлык (щелкните правой кнопкой мыши, чтобы создать новый) и передать путь к рабочей области в качестве параметра основной программе VSC, не забудьте поставить двойные кавычки; вы также можете добавить значок. 1.18 В реальном виртуальном рабочем пространстве одно окно может содержать несколько папок, которые не вместе. В меню «Файл» также есть функция «Сохранить рабочее пространство», но я ее не пробовал, и нет гарантии, что все будет хорошо.

Очистить временные файлы

По такой конфигурации после длительной компиляции кода должно быть много exe, и они могут быть разбросаны по разным папкам.

Вы можете изменить файл json и назначить каталог сгенерированного файла папке, выделенной для exe; в противном случае используйте учебник Baidu gcc и просмотрите комментарии в моем файле json. Или найдите * .exe в правом верхнем углу проводника и удалите его вручную.

Вы также можете написать летучую мышь, поместить ее в рабочую область и щелкнуть правой кнопкой мыши Выполнить код, когда вы хотите ее использовать:

del *.exe /q /s del tempCodeRunnerFile.c /q /s del a.out /q /s del *.o /q /s

Добавить чисто английский метод ввода

В Windows 10 метод ввода по умолчанию — только один Microsoft Pinyin. Нажмите Shift один раз для преобразования между китайским и английским языками; для обеспечения совместимости нажмите ctrl и пробел для преобразования между китайским и английским языками, но эта комбинация клавиш должна принудительно запускать Intellisense.

Поэтому я настоятельно рекомендую вручную добавить метод ввода на английском языке, переключиться на чисто английский метод ввода (win + пробел), когда код нормальный, и использовать английский режим китайского метода ввода, когда требуются частые китайские комментарии или при написании китайских строк в строке.

Это также может решить проблему, связанную с тем, что в некоторых играх необходимо использовать клавишу Shift, но при этом конфликтует одна и та же комбинация клавиш. Для конкретных операций вы можете использовать Baidu самостоятельно или прочитать эту довольно сложную статью, которую я написал:Windows переключает язык отображения и добавляет чистый английский метод ввода。

Некоторые возможные ошибки

Для единообразия чтения эта часть перенесена в «А. Некоторые другие возможные ошибки». Если вы столкнулись с проблемой, сначала проверьте, упоминалась ли она там.

4. Прочие настройки

Некоторые из моих других настроек используются в global settings.json, настроены в соответствии с моей ситуацией и не нуждаются в написании в соответствии со мной.Введите запятую после записи.; Я не добавлял внешнюю скобку, поэтому не теряйте ее

Текущая версия VSC использует интерфейс визуальных настроек, который изначально редактировался вручную и появились две колонки настроек. Щелкните фигурную скобку в правом верхнем углу, чтобы изменить ее вручную.

"editor.fontFamily": "Изометрическое изменение пряжи жирным SC", // управление шрифтом редактора "editor.fontSize": 16, // То же, что и выше "editor.fontLigatures": true, // Объединенные символы, эффект не очень хорошо описывать, см. последнюю часть https://typeof.net/Iosevka "editor.minimap.enabled": false, // Я лично не использую миникарту, только то, что справа "editor.dragAndDrop": false, // После выделения текста вы можете перетащить его, чтобы отрегулировать положение. Мне не нужно "editor.cursorSmoothCaretAnimation": true, // Становится плавным при перемещении курсора "editor.smoothScrolling": true, // прокрутка плавная, но эффект очень слабый "files.trimTrailingWhitespace": true, // При сохранении удаляем пробел в конце каждой строки "files.insertFinalNewline": true, // Добавить пустую строку в конец файла после сохранения, привычка под Linux "files.autoGuessEncoding": false, // Если включено, при открытии файла будет пытаться угадать кодировку набора символов. См. 6 по причине, по которой я выключил его, и он также отключен по умолчанию "workbench.colorTheme": "One Dark Pro", // тема "workbench.colorCustomizations": < "activityBar.foreground": "# 39C5BB" // Настройте цвет; если вы хотите определить другие местоположения, см. официальную документацию >, "workbench.settings.useSplitJSON": true, // восстанавливаем настройки двух столбцов во время редактирования вручную "window.zoomLevel": 0.2, // общий масштаб "git.enabled": false, // Если вы не используете git, отключите его "git.ignoreMissingGitWarning": true, // То же, что и выше "[c]": < // "files.encoding": "gbk" // Этот формат может применять настройки к файлам с указанным суффиксом. Если вы действительно хотите использовать gbk, установите его так. То же верно и для cpp. >,

Gengshahei — это шрифт, созданный Богом B внизу, который отличается хорошей пунктуацией (ошибкой):be5invis/Sarasa-Gothic

Хотя Consolas — хороший выбор среди встроенных шрифтов Windows, в нем есть только английские шрифты; хотя Microsoft Yahei является шрифтом без засечек, он не равноудаленный, что очень не подходит для программирования, а контуры не равноудалены; средний Йи Сон Ти . Прощай. Новых шрифтов нет. Две другие системы я не знаю. Шрифтов для программирования под Windows почти нет. Consolas Gaya Black, все в порядке, но почему бы не использовать более качественные.

6. О китайских и искаженных иероглифах

Многие люди сталкивались с искаженными символами при выводе китайского языка в VS Code. Это связано с тем, что исходный код по умолчанию закодирован в UTF-8, а cmd / PowerShell закодирован в GBK. Скомпилируйте напрямую, он выведет «Hello» как «Huan Yu». В Linux такой проблемы нет.

Одно из решений — использовать gcc при компиляции-fexec-charset=GBKС этим параметром (доступна текущая конфигурация) сгенерированная программа закодирована в GBK, а исходный файл по-прежнему имеет формат UTF8И кодировка выполнения clang поддерживает только UTF-8, поэтому решения с clang нет.

Другой метод — вывод широкими символами, что немного сложно, см.Некоторые тесты языка C и китайского (Win, исходный код UTF8). В этой статье также упоминается chcp 65001.

Изменение языка программ, не поддерживающих Unicode, непосредственно на UTF8 (бета) приведет к искажению всех программ, использующих GBK, что недопустимо.

Конечно, если вы не собираетесь настаивать на использовании UTF8 в качестве кодировки исходного кода, вы можете напрямую использовать кодировку GBK.

еслиОткрыть существующий файл, закодированный в GBK, VS Code откроется с кодировкой UTF-8 по умолчанию (если вы не задали кодировку предположения), так что китайский язык в редакторе будет искажен. В это время наведите указатель мыши на GBK в правом нижнем углу, выберите «Открыть заново по кодировке», выберите UTF-8 ОК. Тогда почему бы не включить автоматическое кодирование наугад? Вы можете сослаться на этот мой ответ:Что мне делать, если в комментариях VS Code на китайском языке отображаются искаженные символы?. Если вас это не беспокоит, просто откройте.

Если вы отправляете файл кода другим людям, использующим Windows, лучше всего преобразовать его в GBK, иначе он может быть искажен, когда другие люди откроют его с помощью Блокнота (Блокнот после 1803 года немного улучшился, а в China Unicom нет искаженных кодов).

Для отладки, как бы вы это ни делали, gdbНе удается отладить программы, в пути которых есть китайский. Это похоже на ошибку gdb, но приоритет очень низкий:[gdb] cannot not open source file with Chinese/Unicode characters in path when debugging · Issue #602 · microsoft/vscode-cpptools

Короче говоря, для Windows нет хорошего решения этих проблем, потому что набор, используемый в этой статье, перенесен из Linux. С линуксом таких проблем быть не должно.

7. Не удается найти ошибку файла заголовка.

  • gcc не находится в пути. Вернитесь и просмотрите шаг проверки выше
  • C_cpp_properties.json настроен вручную, и указанный путь неверен. Не волнуйтесь, если вы не создавали этот файл
  • Попробуйте перезапустить

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

Еще одна ошибка, из-за которой не удается найти файл заголовка:

Эта ситуация связана с тем, что целью clang по умолчанию является msvc, который необходимо добавить —target=x86_64-w64-mingw Этот параметр работает.

Эта цель по умолчанию жестко запрограммирована в исходном коде. Я огляделся и не нашел нормального способа ее изменить. Загрузите исходный код clang, измените его самостоятельно, а затем скомпилируйте сам clang, может быть, это можно решить. Или установите Windows SDK вместо mingw, чтобы он соответствовал цели по умолчанию.

Конечно, сейчас проще всего скомпилировать с помощью gcc.

12. Используйте clang под Win

Фактически, эта часть изначально была основной частью этой статьи, но она вводит слишком много концепций, и эффект не так хорош (потому что нет libc ++), теперь все они размещены здесь и становятся необязательным содержанием. Фактически, я рекомендую использовать WSL (но, возможно, это будет перепрыгивать из одной ямы в другую), эта часть предназначена только для опыта наступления на яму.

  • В: Зачем устанавливать Clang?
    О. Сообщение об ошибке более удобное. так же как:Чем Clang лучше GCC?
  • Q: Как произносится Clang?
    A: Правильный ответ — / ˈklæŋ /, то есть «c» звучит как «Да», однако на самом деле это основано на понимании обеих сторон. Например, можно сказать SQL в виде круга.
  • В: Почему необходимо устанавливать и Clang, и MinGW?
    A: Поскольку Clang под Win не имеет libc ++. Вы также можете установить VS и использовать Windows SDK, MinGW вам не нужен. Это более официальный вариант, но большего размера.
  • Q:MSVC integration install failed / unable to find a Visual Studio installation.
    A: Это причина предыдущего. Clang по умолчанию использует серверную часть MSVC. Но в этой части используется MinGW, поэтому игнорируйте это приглашение. Или установите Windows SDK

окружение

  • LLVM Download Page: Загрузите Clang на этой странице. В предварительно созданных двоичных файлах выберите Windows (64-разрядная версия), скачивать файл .sig не нужно.
  • vscode-clangd: предоставляет функции Intellisense и Lint; см. хранилище и использование:clangd/clangd
  • Адаптер команд C / C ++ Clang: используется в этой статье. Если есть проблема с vscode-clangd, вы можете подумать о переходе на эту. Конфигурация другая, вам нужно изменить clang.cflags; если проблем нет, не устанавливайте его.
  • Clang-Format: устанавливайте только тогда, когда вы хотите настроить стиль кода, например, переносить ли фигурные скобки. Нужно научиться пользоваться
  • CodeLLDB: расширение vscode lldb, требует среды Python; я никогда не использовал его

Конфигурация

  • Команда компиляции плюс одно предложение —target=x86_64-w64-mingw . Целью clang по умолчанию является msvc, и файл заголовка не будет найден, если он не добавлен.
  • C_Cpp.errorSquiggles 、 C_Cpp.autocomplete 、 C_Cpp.suggestSnippets Выключите его, иначе он повторится с отчетом clangd

Фактически, это установка этих параметров компиляции, в основном используя -Wall и —target = x86_64-w64-mingw. Clangd будет использовать только compile_flags.txt, ближайший к файлу для оценки. Поскольку необходимо обеспечить наличие параметра —target, лучше всего создать корневой каталог на диске в рабочей области для отката.

Но что еще более опасно, так это то, что и C, и C ++ будут использовать .h в качестве файла заголовка. Если вы не добавите какой-либо std, .c и .cpp могут работать правильно, но .h будет использовать режим C. Нет хорошего пути к откату. По-прежнему то же предложение, либо установить Windows SDK.

13. Мой опыт программирования

С точки зрения размера, тело + компилятор + расширение, если оно используется только для записи C, занятость жесткого диска не мала, и она будет равна 1 ГБ. Объем памяти все еще относительно невелик (около 0,5 г); были ошибки, которые потребляли много памяти, и, конечно же, они давно исправлены.

Может быть, первое преимущество VSC — привлекательность? Хотя он и не был специально разработан для C / C ++, сейчас это должен быть самый современный текстовый редактор. И один только Lint намного сильнее, чем wintc, cfree, dev c ++, не говоря уже о том, что собственная функция отладки dev c ++ содержит ошибки.

Другие IDE, CodeBlocks все еще живы, хотя историческое бремя очень очевидно. Clion имеет красивый интерфейс и мощные функции. Однако он доступен только на английском языке. Это может быть немного сложно; студенты могут подать заявку на получение ключей бесплатно, в противном случае с них будет взиматься плата. Если вы хотите использовать Windows SDK, проверьте настольную разработку на C ++ для следующей версии Visual Studio (Installer), Community. Это соответствует цели по умолчанию для Clang, но я думаю, что лучше использовать VS напрямую. Комментарии других респондентов по поводу некоторых C IDE можно найти в этом ответе:Сяобай, у которого нет основ программирования, готов выучить язык C, использовать VC6 или VS2015?。

Я все еще хочу сказать студенческой вечеринке: возможность самостоятельно изучить эту статью на Baidu, попытаться понять и настроить ее вручную, намного лучше, чем бесчисленное количество людей, которые обращаются к группе и ждут, пока учителя опубликуют IDE в группе QQ. Если вы способны, я предлагаю вам прочитать документ VSC:Documentation for Visual Studio CodeЭто не сложно, и неплохо испытать практическое применение английского языка.

А. Некоторые другие возможные ошибки

  • Если вы пишете только hello world без точек останова,После нажатия f5 черная рамка мигает / возвращается назад, это нормально.. Вы можете добавить один или два в конце, если хотите остановить программу getchar(); , Не понимаю почему иногда используются два? Спросите своего учителя языка C или используйте system(«pause») , Или добавьте точку останова, или используйте встроенный терминал (externalConsole false) в launch.json. Если вы настаиваете на использовании внешнего терминала и не хотите ничего делать, просто хотите приостановить его после запуска, тогда VSC не может этого сделать, по крайней мере, моя конфигурация не может этого сделать, я не хочу учиться, потому что я использую встроенный терминал.
  • preLaunchTask «Компиляция» прервана, и код выхода равен 1. При компиляции произошла ошибка, и вы работаете с F5. Появится этот запрос; если вы все еще нажмете «Отладка», файл, который был успешно скомпилирован в прошлый раз, будет отлажен. Фактически, все сбои компиляции вызовут эту ошибку. Разве это не здравый смысл, когда возвращаемое значение ошибки равно 1? Просто сказал мне, что это приглашение появилосьСовершенно бесполезно, Значит, что-то пошло не так, причину никто не видит,Причина в панели «Терминал». Если Hello World можно отладить и запустить в обычном режиме, но в каком-то другом коде есть эта ошибка, вероятно, этоОшибка в вашем собственном коде
  • Терминал будет повторно использован задачей, нажмите любую клавишу, чтобы закрыть его: Вы когда-нибудь слышали о «нажмите любую клавишу, чтобы продолжить»? Это предложение — вот что оно означает. Это предложение даже более бесполезно, чем приведенный выше код выхода 1. Оно вообще не содержит никакой достоверной информации.Он будет отображаться независимо от успеха или ошибки, Это пояснительный текст.
  • Невозможно открыть . не могу найти файл (file: /// build / glibc-OTsEL5 / glibc-2.27 / . ): Я столкнулся с этой проблемой в Linux, похоже, вы пытаетесь войти в библиотеку Функция, но без исходного кода. Решение состоит в том, чтобы поместить следующий glibc в указанное место. Или посмотрите это:Disable «Unable to open file» during debug · Issue #811 · Microsoft/vscode-cpptools。
  • undefined ссылка на xxx . команда компоновщика не удалась: была вызвана необъявленная функция. Может случиться так, что имя функции введено с ошибкой или отсутствует заголовочный файл. Короче говоря, в вашем собственном коде есть ошибка.
  • ld: невозможно открыть выходной файл . в разрешении отказано: исходная программа все еще выполняется (например, бесконечный цикл) и не может быть перезаписана, поэтому создание не выполняется. Диспетчер задач просто завершает этот процесс.
  • В MinGW использование strcmp в окне Watch вызовет сбой gdb и завершение работы по неизвестным причинам. Нормально под linux.
  • После переименования файла существующий Lint все еще будет в столбце вопросов; точка останова может стать недействительной после изменения файла. И есть еще несколько таких мелких ошибок, как правило, просто выключите VSC и снова включите.
  • Эта конфигурация не может использовать Bash для Windows или WSL, потому что обратная косая черта в bash будет распознаваться как новая строка. cpptools теперь предоставляет один для launch.jsonBash on Windows LaunchФрагменты. Теперь есть еще один удаленный WSL. Но я не пробовал, как ими пользоваться.
  • Если хотите отладить, не открывайте оптимизацию. Gcc может использовать -Og для сохранения некоторой отладочной информации, но после использования clang вы не можете использовать gdb для отладки. Несмотря на это, я все еще сталкивался с проблемой невозможности перейти в функцию при написании кода, и VS может перейти в нее.
  • vscode-clangd не может правильно определить printf, scanf и realloc в первый раз, но все будет нормально после его однократного использования в коде. Я тоже не знаю почему.
  • В настоящее время не должно быть &: терминал использует PowerShell или ExecutionorMap для выполнения двух команд, которые я закомментировал. Подробнее см. Описание settings.json выше.
  • crt0_c.c :(. text.startup + 0x2e): undefined ссылка на `WinMain ‘: нет функции main или main записывается как mian.
  • Используйте clang + mingw в Win, #include сообщит, что файл ‘float.h’ не найден, просто измените его на g ++. Я думаю, это ошибка библиотеки, но я все равно не знаю, как ее решить.

Б. Как добавить переменные среды

Графический способ: щелкните правой кнопкой мыши «этот компьютер» и выберите свойства или нажмите win + PauseBreak. Выберите Advanced System Settings, Advanced, Environment Variables слева. Выберите Путь в приведенных выше записях, отредактируйте и создайте. Затем введите путь к папке, содержащей целевой exe. Например, gcc находится в C:\mingw\bin\gcc , Просто заполните C:\mingw\bin , Win не чувствителен к регистру.

Командная строка: откройте cmd или PS, setx /m path «%path%;C:\mingw\bin\» . Эта команда не требует прав администратора и не будет завершена с выходом из терминала (аналогично графическому эффекту выше).

Если вы все еще не знаете, как его изменить, вы можете выполнить поиск по запросу «переменные среды» на сайте Baidu или b, чтобы посмотреть видео. Большинство из них не C, но разница небольшая, будьте осторожныНе удаляйте по ошибкеВот и все.

Вы можете оставить сообщение для обсуждения, если у вас есть какие-либо вопросы, но лучше всегоОпишите подробно.И я говорю это снова,Не говорите мне просто предложение «preLaunchTask завершен, код равен 1». Это предложение бесполезно.

Оригинал, некоммерческая перепечатка, укажите источник.

Согласен 4145 1492 комментария

Коллекция Как убрать

люди, которые используют Zhihu

275 человек согласились с ответом

2019.03.23: Обновление плагина C / C ++, теперь вы можете скомпилировать и отладить за один шаг

Нажмите F1 В раскрывающемся списке введите:

>C/C++: build and Debug Active File

2018.11.02: Обновление плагина C / C ++, теперь вы можете использовать интегрированный терминал Debug в VSCode, подробности см. На странице статьи.

Это сентябрь 2018 года, через три года после даты вопроса.

После использования сейчас я чувствую, что писать C / C ++ в VS Code становится все удобнее, в основном потому, чтоcpptoolБыстрая итерация плагинов становится все удобнее.

Ближе к дому, чтобы писать на C / C ++ с помощью VS Code было удобнее, вам необходимо выполнить следующие три требования:

  • Компилятор и установить переменные среды, рекомендуетсяMinGW-w64
  • Код VSC/C++Плагин
  • Код VSCode RunnerПлагин

Конкретный метод составления и работы:

После установки откройте VS Code, создайте новый файл, сохраните его как суффикс .c или .cpp, напишите код и используйте Code Runner для компиляции и запуска.

Есть два способа скомпилировать и запустить Code Runner:

  • Маленький треугольник в правом верхнем углу области редактирования
  • Сочетание клавиш, обычно по умолчанию в Windows и Linux Ctrl + Alt + N

Программа выведет на панель вывода

Один недостаток — нельзя войти .

Поэтому перейдите на страницу настроек, чтобы внести небольшие изменения:

Вы можете проверить параметры в соответствии с изображением или удалить проверку по умолчанию

Самое важное — предпоследнее Run In Terminal Плагин вызовет встроенный терминал VS Code и запустит в нем программу, которая может удовлетворить входные требования.

Если вам нужно включить параметры при компиляции, например -std=c++11 -Wall Для редактирования Code Runner «code-runner.executorMap» , Измените пользовательские настройки, чтобы охватить, например, изменить на:

"code-runner.executorMap": < "c": "cd $dirWithoutTrailingSlash && gcc $fileName -o $fileNameWithoutExt.exe -std=c11 -Wall -lm && ./$fileNameWithoutExt.exe" >

Около $ Параметр в начале — это определение подключаемого модуля Code Runner, см.

Чтобы воспользоваться отладкой и другими функциями, вы можете обратиться к ответам других респондентов или прочитать мою статью:

В нем представлены три варианта компиляции и запуска C / C ++.

ps:После установки компилятора и задания переменных среды текущий подключаемый модуль C / C ++ может автоматически читать и дополнять библиотеку без дополнительной настройки. Спасибо команде разработчиков cpptool ~

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *