Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/621: Рейтинг темы: голосов - 621, средняя оценка - 4.71
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

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

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

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

Тема находится в процессе разработки.
  • эта тема создана для новичков, впервые столкнувшихся с тем, что код с форума, работающий у других форумчан, никак не желает запускаться
    .
  • среда разработки (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 для многих популярных языков программирования, в том числе и для С++. Если говорить о расширениях, у меня установлены такие:

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

    Компилятор можно прикрутить любой, какой у Вас есть (обычно под 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, у меня это выглядит так:


    Для того, чтобы запускать сборку с кнопки (ставится с помощью расширений), стандарт прописываем в файле 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
            }
          ]
        }
      ]
    }
    Вот как это должно выглядеть в итоге:


    Подробные инструкции по настройке 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

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

    .
    .
  4. Связка Code::Blocks и MinGW.
    .
    Скачивать таким образом:

    .
    Поддержка стандарта C++11 включается просто установкой галки в настройках:

    .
    Там же можно создать новый флаг для C++14, и установить галку на него:


    .
  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-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
14.12.2016, 16:23
Как включить C++11 для C++ Builder 10.1 Berlin
Создаём любой проект и идём в настройки:
Кликните здесь для просмотра всего текста

Далее идём в настройки компилятора C++.
Кликните здесь для просмотра всего текста

И снимаем галочку "использовать 'классический' компилятор".
Наслаждаемся результатом.
Кликните здесь для просмотра всего текста
6
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 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», без запятых, кавычек и прочего.
Как на скриншоте.


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


Возвращаемся к проекту, в списке, где показаны все проект вашего workspace, найдите нужный и нажмите правой кнопкой,
выбирайте «Index» —> «Re-solve Unresolved Includes».
После этого все возможности c++11 станут доступны, в том числе и функция stoi.


Материал взят отсюда. Большое спасибо автору за проделанную работу.
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
Закрытая тема Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru