Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5287 / 2375 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

11.12.2016, 00:12. Показов 130173. Ответов 3

Author24 — интернет-сервис помощи студентам
Начнём с расстановки точек над некоторыми ё

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

В этой теме я начну с рассмотрения четырёх наиболее популярных (на мой взгляд) на данный момент IDE:
...и трёх наиболее популярных компиляторов:
  • MSVC++ (так же известный как Visual C++, текущая версия на момент последнего редактирования этой статьи 14.40.33810, поставляемый в комплекте с MS Visual Studio 2022 версии 17.11.2)
    .
  • g++ (из коллекции компиляторов GCC [для операционных систем семейства Windows он же - MinGW], текущая версия на момент последнего редактирования этой статьи 14.2.1)
    .
  • LLVM Clang (или просто clang, текущая версия на момент последнего редактирования этой статьи 18.1.8, к концу сентября 2024 обещают выкатить 19-й Clang)

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


Узнать какой стандарт актуален на данный момент можно здесь.

Если кто-то желает добавить информацию по другим IDE и другим компиляторам - милости прошу.

  1. Связка MS Visual Studio и VC++ compiler.
    .
    Вариант из разряда "всё включено". Скачал - и начал работать. Стандарт С++20 поддерживается, что называется, "из коробки", а так же поддерживаются отдельные фичи и из грядущего С++23. Подробности по поддержке стандарта тут.
    .
  2. Связка VS Code и g++ (GCC) compiler.
    .
    Вариант для тех, кто хочет что-то полегче, чем MS Visual Studio, но такое же красивое и удобное. По сути, VS Code - это просто текстовый редактор, но благодаря большой коллекции расширений (extensions) из него в несколько кликов можно сделать относительно легковесную IDE для многих популярных языков программирования, в том числе и для С++. Если говорить о расширениях, у меня установлены такие:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    Вы можете поставить те, которые больше нравятся Вам.

    Компилятор можно прикрутить любой, какой у Вас есть (обычно под Linux это GCC или Clang, а под Windows это MinGW, MSVC++ или Clang).
    Если у Вас нет никакого компилятора, его надо поставить.

    В случае, если Вы работаете под Windows, установите компилятор MinGW с помощью msys2 и добавьте его в Path (переменные среды).

    Если работаете под Линукс, скажем, используете Ubuntu, откройте терминал и установите компилятор GCC и отладчик gdb такой командой:
    sudo apt install build-essential gdb -y

    Проверьте, что компилятор установлен:
    g++ --version

    В моём случае установлен GCC 13.1, у меня это выглядит так:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)


    Для того, чтобы запускать сборку с кнопки (ставится с помощью расширений), стандарт прописываем в файле c_cpp_properties.json, который лежит в папке .vscode, а если такого файла нет, то его надо создать ручками. В моём случае (для Ubuntu 22.04 и g++) этот файл выглядит так:
    JSON
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    {
      "configurations": [
        {
          "name": "linux-gcc-x64",
          "includePath": [
            "${workspaceFolder}/**"
          ],
          "defines": [],
          "compilerPath": "/usr/bin/g++",
          "cStandard": "c17",
          "cppStandard": "c++20",
          "intelliSenseMode": "linux-gcc-x64"
        }
      ],
      "version": 4
    }
    Кроме этого надо добавить ещё два JSON-файла, один под названием tasks.json, другой под названием launch.json
    Вот как у меня выглядит tasks.json:
    JSON
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    {
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++ build active file",
                "command": "/usr/bin/g++",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}/${fileBasenameNoExtension}",
                    ""
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "Task generated by Debugger."
            }
        ],
        "version": "2.0.0"
    }
    А вот как у меня выглядит файл launch.json:
    JSON
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "C/C++ Runner: Debug Session",
          "type": "cppdbg",
          "request": "launch",
          "args": [],
          "stopAtEntry": false,
          "externalConsole": false,
          "cwd": "/home/sourcerer/dev/c++/hello_cpp",
          "program": "/home/sourcerer/dev/c++/hello_cpp/helloworld",
          "MIMode": "gdb",
          "miDebuggerPath": "/usr/bin/gdb",
          "setupCommands": [
            {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
            }
          ]
        }
      ]
    }
    Вот как это должно выглядеть в итоге:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)


    Подробные инструкции по настройке VS Code для Windows есть тут и тут.

    Если вы собираете свой проект в командной строке, то ничего этого не нужно. Просто указывайте нужные флаги компилятора в самой команде в терминале. У меня это выглядит так:
    Bash
    1
    
    g++ -Wextra -Wall -w -pedantic -std=c++20 main.cpp
    Запуск самой программы у меня выглядит так:
    Bash
    1
    
    ./a.out
    Или всё это можно сделать одной командой:
    Bash
    1
    
    g++ -Wextra -Wall -w -pedantic -std=c++20 main.cpp -o a.out && ./a.out
    Имя исполняемого файла в моём случае по умолчанию a.out, но можно выбрать любое, какое лично Вам нравится, например так:
    Bash
    1
    
    g++ -Wextra -Wall -w -pedantic -std=c++20 main.cpp -o myApp.exe && ./myApp.exe
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    .
  3. Связка QtCreator, MinGW и qmake.
    .
    Поддержка стандарта коллекцией компиляторов GCC в виде таблицы тут.
    Поддержка стандарта С++20 включается в самой IDE путём прописывания в .pro-файле строчек:
    CONFIG += C++20
    QMAKE_CXXFLAGS += -std=c++20
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    .
    .
  4. Связка Code::Blocks и MinGW.
    .
    Скачивать таким образом:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    .
    Поддержка стандарта C++11 включается просто установкой галки в настройках:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    .
    Там же можно создать новый флаг для C++14, и установить галку на него:
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
    Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

    .
  5. Связка Code::Blocks и Clang.
    .
    Подробности тут1.
    .
  6. Связка QtCreator, Clang и cmake.
    .
    Подробности тут2.
    .
  7. Связка C++ Builder 10.1 Berlin и Clang.
    .
    Подробности тут (ниже в теме).
    .
  8. Связка Dev-C++ и GCC.
    .
    Подробности тут (ниже в теме).
    .
  9. Связка Eclipse и GCC.
    .
    Подробности тут (ниже в теме).

________________________________
1 Статья была написана полтора года назад и с тех пор актуальность информации не проверялась. Возможно, за полтора года какие-то нюансы поменялись. Позже перенесу сюда свежую проверенную версию.
2 То же, что и по предыдущему пункту. Актуальность информации, выложенной в той теме, не проверялась с 4 октября 2015 года.
.
.
Обсуждение гайда ведётся в этой теме.
.
.
23
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2016, 00:12
Ответы с готовыми решениями:

Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17)
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17)

Как подключить поддержку стандарта С++11 в gcc
Как подключить поддержку стандарта С++11 в gcc. Не могу скомпилировать программу.

Подключить поддержку стандарта C99 компилятором
Здравствуйте. Стоит MinGW. Версия 4.6.2 Проблема в том, что мой MinGW не поддерживает C99. Как подключить C99?

3
Любитель чаепитий
 Аватар для GbaLog-
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,018
Записей в блоге: 1
14.12.2016, 16:23
Как включить C++11 для C++ Builder 10.1 Berlin
Создаём любой проект и идём в настройки:
Кликните здесь для просмотра всего текста
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

Далее идём в настройки компилятора C++.
Кликните здесь для просмотра всего текста
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)

И снимаем галочку "использовать 'классический' компилятор".
Наслаждаемся результатом.
Кликните здесь для просмотра всего текста
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
6
Любитель чаепитий
 Аватар для GbaLog-
3744 / 1800 / 566
Регистрация: 24.08.2014
Сообщений: 6,018
Записей в блоге: 1
13.02.2017, 09:40
Как включить C++11/C++14/C++17 в Dev-C++.
На английской версии:
Tools -> Compiler Options -> "Compiler" tab
Далее ставим галочку на "Add the following commands when calling the compiler".
И в окно ввода вводим данный текст для 11/14/17-го стандарта соответсвенно: -std=c++11/-std=c++14/-std=c++17.
Сохраняем и пробуем.

На русской версии:
Сервис -> Настройки компилятора -> Вкладка "Компилятор"
Далее ставим галочку на "Добавить следующие команды при компиляции"(вольный перевод, может немного отличаться).
Далее всё так же, как и для английской версии.

Если после произведенных действий компилятор выдаёт ошибку, что, мол, такого флага компилятора нет, то стоит попробовать данные флаги для C++11/14/17 соответственно: -std=c++0x, -std=c++1y, -std=c++1z.
Если даже с новым флагом ошибка остается, то это значит, что ваш компилятор не поддерживает C++11/14/17 и стоит задуматься об обновлении.
5
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.06.2017, 16:12
Как включить С++11 в Eclipse

Уже должен быть создан проект, настройка будет выполняться для него.

Идем в Project -> Properties -> C/C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous.
Там в текстовом поле «Other flags» в конец через пробел дописываем флаг «-std=c++11», без запятых, кавычек и прочего.
Как на скриншоте.
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)


Далее двигаемся в Project -> Properties -> C/C++ General -> Preprocessor Include Paths -> вкладка Providers.
Ищем в списке строку с фразой «Built-in Compiler Settings», выбираем ее, и снизу в текстовом поле
«Commad to get compiler specs:» в конец дописываем флаг «-std=c++0x».
После этого, с помощью кнопки «Move Up» справа, двигаем эту строчку на верх списка.
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)


Возвращаемся к проекту, в списке, где показаны все проект вашего workspace, найдите нужный и нажмите правой кнопкой,
выбирайте «Index» —> «Re-solve Unresolved Includes».
После этого все возможности c++11 станут доступны, в том числе и функция stoi.
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)


Материал взят отсюда. Большое спасибо автору за проделанную работу.
7
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2017, 16:12
Помогаю со студенческими работами здесь

Как включить поддержку jpeg в GD?
Всем привет! Отсутствует поддержка jpeg в GD Php 7.4 уже установлена. На ней работает сайт Подскажите, как установить эту...

Как включить поддержку Bookmarks
Подскажите, где можно включить поддержку Bookmarks, чтобы, наприме, использовать AbsolutePage?

Как включить поддержку иероглифов?
Собственно как это сделать? Попытался установить японский языковой пакет, но это не помогло, всё-равно вопросики вместо иероглифов.

Как включить поддержку русского языка?
Перепробовал все установочники Turbo Pascal, во всех одна и та же проблема. Погуглил , нашел русификаторы (keyrus ) например, но толку не...

Как включить поддержку OpenGL в VMware?
При рендере плеера в html5 получаю следующие ошибки: Error during ANGLE OpenGL init. Refused to create native OpenGL context because of...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru