Добавить флаг компиляции visual studio

Обновлено: 02.07.2024

Стандарт C++ определяет правила поведения программ в определенных обстоятельствах. И в большинстве случаев компиляторы будут следовать этим правилам. Однако многие компиляторы вносят свои собственные изменения в язык, часто для улучшения совместимости с другими версиями языка (например, C99) или по историческим причинам. Такое поведение, зависящее от компилятора, называется расширениями компилятора.

Написание программы, использующей расширение компилятора, позволяет писать программы, несовместимые со стандартом C++. Программы, использующие нестандартные расширения, обычно не будут компилироваться другими компиляторами (которые не поддерживают те же расширения), или, если такая программа будет всё-таки скомпилирована, она может работать некорректно.

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

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

Лучшая практика

Отключите расширения компилятора, чтобы ваши программы (и методы кодирования) оставались совместимыми со стандартами C++ и работали в любой системе.

Отключение расширений компилятора

Для пользователей Visual Studio

Чтобы отключить расширения компилятора, щелкните правой кнопкой мыши на имени проекта в окне обозревателя решений и выберите Свойства:

Рисунок 1 Свойства проекта в обозревателе решений

Рисунок 1 – Свойства проекта в обозревателе решений

В диалоговом окне проекта сначала убедитесь, что в поле Конфигурация (Configuration ) установлено значение Все конфигурации (All Configurations).

Затем кликните C/C++ → вкладка Язык (Language) и установите для параметра «Отключить расширения языка» (Disable Language Extensions) значение «Да (/Za)».

Рисунок 2 Отключение расширений языка

Рисунок 2 – Отключение расширений языка

Для пользователей Code::Blocks

Отключите расширения компилятора через меню Settings (Настройки) → Compiler (Компилятор) → вкладка Compiler flags (Флаги компилятора), затем найдите и включите параметр -pedantic-errors .

Рисунок 3 Отключение расширений языка

Рисунок 3 – Отключение расширений языка

Для пользователей GCC/G++

Вы можете отключить расширения компилятора, добавив флаг -pedantic-errors в командную строку компиляции.

Напоминание

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

Как с огромным количеством различных версий языка C++ (C++98, C++03, C++11, C++14, C++17, C++20) компилятор понимает, какую из них ему следует использовать? Как правило, компилятор выбирает стандарт языка по умолчанию (часто не самый последний языковой стандарт). Если вы хотите использовать другой стандарт, то вам придется внести изменения в настройки вашей IDE/компилятора. Эти настройки применяются только к текущему проекту. При создании нового проекта вам придется всё делать заново.

Кодовые имена для версий языка С++

Обратите внимание на то, что каждый языковый стандарт имеет название, указывающее на год его принятия/утверждения (например, C++17 был принят/утвержден в 2017 году).

Однако, когда согласовывается новый языковой стандарт, неясно, в каком году удастся его принять, поэтому действующим языковым стандартам присваиваются кодовые имена, которые затем заменяются фактическими именами при доработке стандарта. Например, C++11 назывался c++1x , пока над ним вели работу. Вы можете по-прежнему видеть на просторах Интернета подобные кодовые имена (особенно, когда речь заходит о будущей версии языкового стандарта, у которого еще нет окончательного названия).

Вот сопоставление кодовых имен версий С++ с их окончательными названиями:

Например, если вы видите c++1z , то знайте, что речь идет о стандарте C++17.

Установка стандарта языка С++ в Visual Studio

На момент написания данной статьи, Visual Studio 2019 по умолчанию использует возможности C++14, что не позволяет использовать более новые фичи, представленные в C++17 и в C++20.

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

Чтобы использовать новый языковый стандарт в Visual Studio, откройте ваш проект, затем щелкните правой кнопкой мышки по названию вашего проекта в меню "Обозреватель решений" > "Свойства" :


В диалоговом окне вашего проекта убедитесь, что в пункте "Конфигурация" установлено значение "Все конфигурации" . Затем перейдите на вкладку "C/C++" > "Язык" и в пункте "Стандарт языка С++" выберите ту версию языка С++, которую хотели бы использовать:


На момент написания данной статьи, я рекомендую выбрать "Стандарт ISO C++17 (/std:c++17)" , который является последним стабильным стандартом.

Если вы хотите поэкспериментировать с возможностями грядущего стандарта языка C++ — C++20, то вы можете выбрать пункт "Предварительная версия . (/std:c++latest)" . Просто помните, что его поддержка может иметь баги.

Установка стандарта языка C++ в Code::Blocks

Code::Blocks по умолчанию может использовать стандарт C++11. Хорошей новостью является то, что Code::Blocks позволяет устанавливать ваш стандарт языка С++ глобально, поэтому вы можете установить его один раз и сразу на все проекты (а не для каждого проекта в индивидуальном порядке). Для этого перейдите в меню "Settings" > "Compiler" :


Затем на вкладке "Compiler flags" найдите следующие пункты меню:


Отметьте тот пункт, у которого число обозначает ближайший (к текущему) год утверждения стабильной версии и нажмите "ОК" (на вышеприведенном скриншоте этим пунктом является "Have g++ follow the C++17 ISO C++ language standard [-std=c++17]" ).

Примечание: Если вы не нашли в ваших настройках опцию с C++17, то вам следует обновить вашу версию Code::Blocks.

Установка стандарта языка С++ в GCC/G++

В GCC/G++ вы можете прописать соответствующие флаги -std=c++11 , -std=c++14 , -std=c++17 или -std=c++2a , чтобы подключить функционал C++11/14/17/20, соответственно.

Тестирование вашего компилятора

После подключения версии C++17 или выше, вы можете провести тест, который позволит понять, всё ли верно сделано и действительно ли подключена новая версия языка С++. Следующая программа в С++17 должна выполниться без каких-либо предупреждений или ошибок:

VSCode

Visual Studio Code — популярный редактор кода, бесплатный и с открытым исходным кодом. Но я уверен: каждый из нас, кто пытался настроить Visual Studio Code для разработки приложений на C++, Java или Python, прошел через стадию: “О Боже! Почему нельзя как-нибудь попроще?” Я сам пробовал настроить VS Code пару раз и в итоге закончил тем, что использовал CodeBlocks. 🙁

Прочитав много документации, посмотрев ряд роликов на YouTube и потратив несколько дней на саму настройку VS Code, я пишу эту статью, чтобы все это не пришлось проделывать уже вам!

Сегодня я покажу, как настроить среду разработки для спортивного программирования на C++, Java и Python в VS Code с нуля. Мы также посмотрим, какие расширения больше всего пригодятся, чтобы начать работу с VS Code. В конечном счете, ваша среда разработки будет выглядеть примерно так:


1. Устанавливаем Visual Studio Code

Скачайте последнюю версию Visual Studio Code с официального сайта. Рекомендуется загрузить системный установщик (System Installer), но если у вас нет прав администратора, то пользовательский установщик (User Installer) тоже подойдет. Выполните все обычные шаги по установке и обязательно проставьте все следующие чекбоксы:


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

2. Настраиваем расширения

Ниже приведен список расширений, которые нам понадобятся для правильной настройки VS Code. Откройте VS Code и перейдите на панель расширений (Ctrl + Shift + X), которая находится на левой панели инструментов, и начните загружать друг за другом следующие расширения:

    от Microsoft — [Важно] Для корректной работы этого расширения нам понадобится установленный и добавленный в PATH компилятор MinGW. Если у вас его нет, следуйте этому руководству. от austin. от Microsoft — вам нужно будет настроить Python для работы этого расширения. Загрузите и установите последнюю версию отсюда. от Microsoft — [Важно] Перед установкой убедитесь, что в вашей системе настроены Java 8 JDK и JRE и указаны все необходимые переменные среды для Java. Если нет, посмотрите это видео о том, как настроить Java на вашем компьютере. от Jun Han — мы будем использовать это расширение для запуска всех наших программ. Для этого необходимо выполнить некоторые шаги по настройке. Мы увидим эти шаги в следующих разделах.

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

  • (Необязательно)Material Theme от Mattia Astronio — это расширение содержит множество приятных глазу тем. Вы можете выбрать любую, какая понравится. Лично я предпочитаю Monokai, которая доступна в VS Code по умолчанию, без каких-либо расширений.

Чтобы выбрать тему, нажмите Ctrl + Shift + P. Откроется палитра команд. Осуществите поиск по слову “theme” и выберите опцию Color Theme. Чтобы настроить иконки, можете выбрать опцию File Icon Theme.


Расширения для тех, кто интересуется FrontEnd-фреймворками для веб-разработки, такими как Angular и React:

  • (Необязательно) Angular Language Service от Angular.
  • (Необязательно) Angular Snippets от John Papa.
  • (Необязательно) ES7 React / Redux / GraphQL / React-Native snippets от dsznajder.
  • (Необязательно) React Native Tools от Microsoft.
  • (Необязательно) Live Server от Ritwick Dey.

3. Настраиваем внешний вид редактора

Итак, мы уже установили VS Code и несколько расширений. Теперь мы готовы настраивать среду разработки. Я создал шаблон для спортивного программирования в VS Code и загрузил его в свой профиль на Github.

Перейдите по этой ссылке и загрузите шаблон себе на компьютер. Распакуйте его в любое место по вашему выбору. После этого откройте получившуюся папку в VS Code. Вы должны увидеть что-то вроде этого:


Пройдитесь по файлам main.cpp, Main.java и main.py и посмотрите на записанный в них образец кода. По сути, шаблонный код, предоставленный в образцах для каждого из этих трех языков, принимает входящие данные из файла input.txt и обеспечивает вывод в файл output.txt. Для каждой программистской задачи, которую вы хотите решить, просто создайте копию этого шаблона и напишите свой код в функции solve().

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

  • Откройте файлы в следующем порядке: main.cpp, input.txt, output.txt. Порядок, в каком были открыты файлы, можно видеть сверху на панели инструментов. Убедитесь, что порядок именно такой, как указано выше.
  • Откройте input.txt. Выберите в меню View -> Editor Layout -> Split Right. Вы должны увидеть что-то подобное:


  • У вас получится две группы. Перетащите output.txt из левой группы в правую. Закройте тот input.txt, что остался слева. Должно выйти примерно так:


  • Далее откройте output.txt в правой группе. Выберите View -> Editor Layout -> Split Down. Уберите output.txt из верхней группы. После этого вы увидите:


Готово! Мы настроили внешний вид редактора. А теперь давайте запускать код.

4. Запускаем код!

Для запуска нашего кода мы будем использовать расширение Code Runner, потому что ручная настройка VS Code для каждого языка — весьма сложная задача и потребует много затрат времени и сил.

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

  • Выберите File -> Preferences -> Settings.
  • Введите “code runner run in terminal” в поле поиска и установите галку в чекбоксе:


По умолчанию Code Runner не добавляет флаг -std=c++14 при компиляции кода. Это ограничивает ваши возможности как программиста. Например, если вы попытаетесь сделать так:

То это вызовет предупреждение: “Расширенные списки инициализаторов доступны только с -std=c++11 или -std=gnu++11”.

Выполните следующие действия, чтобы добавить флаг:

  • Выберите File -> Preferences -> Settings.
  • Введите в поиске “Run Code Configuration”.
  • Определите местонахождение “Code-runner: Executor Map” и выберите “Edit in settings.json”. Это откроет файл settings.json. Добавьте туда следующий код:


Наконец-то всё настроено для запуска ваших программ на C++, Java и Python.

Откройте файл main.cpp. Нажмите правую кнопку мыши и выберите опцию Run Code. Попробуйте напечатать что-нибудь в функции solve(), чтобы проверить, происходит ли у вас вывод в файл output.txt или нет.


Следуйте той же процедуре с файлами Main.java и main.py. Расширение Code Runner возьмет на себя выполнение каждого из них.

Я надеюсь, что эта статья помогла вам настроить Visual Studio Code. Счастливого программирования!

Поскольку мне всё равно пришлось ставить Visual Studio Community для того, чтобы установить Windows Kits для работы с WinAPI, то я решил не использовать MingW, а доустановить C++ build tools и использовать их для компиляции. В этом случае придётся переделать задачи (tasks) и настройки VSCode.

Хорошее описание нашёл здесь, его и буду использовать в данной заметке.

Нам потребуется


1. Естественно нам потребуется сама программа VSCode.
2. В Visual Studio Community должен быть установлен компонент Desktop development with C++ :

Чтобы проверить успешную установку, достаточно вызвать Developer Command Prompt for VS 2019 (файл VsDevCmd.bat ) из Пуска. Там нужно запустить файл cl.exe . Вывод консоли должен быть без ошибок:

3. Для VSCode должно быть установлено дополнение (расширение) Microsoft C/C++

Настройка

4. В Проводнике открываем рабочую папку проекта и, удерживая Shift , нажимаем правую кнопку мыши, после чего выбираем Open PowerShell window here
5. В открывшемся окошке PowerShell запускаем VSCode, для этого нужно набрать code . и нажать Enter :

Шаги 9-11 скорее всего не нужны. В статье они есть, но без них у меня всё тоже прекрасно компилируется.


9. Открываем палитру команд с помощью комбинации клавиш Ctrl + Shift + P
10. Список большой, поэтому проще ввести часть слова и выбрать нужную команду Edit Configurations UI из списка:

11. В конфигурации необходимо проверить, а, при необходимости, установить путь для компилятора:



12. Внесём изменения в файл settings.json :

У меня глобальный файл настроек, а не только для проекта, поэтому я добавляю строчки в начало файла C:\Users\Denis\AppData\Roaming\Code\User\settings.json

13. Ранее я уже создавал файл Задач tasks.json, поэтому сейчас я добавлю к нему новые строчки:

14. Чтобы у нас была возможность запустить проект на отладку, можно использовать файл launch.json . Но я не хочу создавать такой файл для каждого проекта каждый раз, поэтому сделаю глобальную конфигурацию. Для этого я добавлю строчки в файл settings.json :

Благодаря этому, при нажатии F5 , проект будет откомпилирован, а потом запущен сразу после этого. Просто запустить, без отладки, можно комбинацией Ctrl + F5

Читайте также: