Урок №10. Налаштування компілятора: Вибір стандарту мови С++

  Юрій  | 

  Оновл. 5 Лип 2020  | 

 176

Як із величезної кількості різних версій C++ (C++98, C++03, C++11, C++14, C++17, C++20) компілятор розуміє, яку з них йому слід використовувати? Як правило, компілятор вибирає стандарт мови програмування за замовчуванням (дуже часто це є не найновіша версія мови). Якщо ви хочете використовувати інший стандарт, то вам необхідно буде внести певні зміни в налаштування вашої IDE/компілятора. Варто відзначити, що дані налаштування застосовуються лише до поточного проекту. При створенні нового проекту вам доведеться все робити заново.

Кодові імена версій мови С++

Зверніть увагу, що стандарти мови С++ названі в честь тих років, в які вони були завершені/опубліковані (наприклад, C++17 був завершений в 2017 році).

Однак, коли узгоджується новий стандарт мови програмування, то дуже часто буває незрозуміло, в якому році вдасться його завершити, тому поточному стандарту мови, який розробляється, дають кодове ім’я, яке потім замінюється на фактичну назву версії при публікуванні. Наприклад, C++11 мав кодове ім’я c++1x, коли над ним вели роботу. Ви і досі можете натикатися на подібні кодові імена версій С++, особливо, коли мова заходить про майбутню версію мови С++, у якої ще немає остаточної назви.

Нижче подані кодові імена версій С++ і їх остаточні назви:

   c++1x = C++11

   c++1y = C++14

   c++1z = C++17

   c++2a = C++20

Наприклад, якщо ви зустріли назву 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)", який є найновішим стабільним стандартом, який підтримує Visual Studio.

Якщо ви хочете поекспериментувати з можливостями майбутнього стандарту мови 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 повинна виконатися без будь-яких попереджень чи помилок:

Якщо вам не вдалося скомпілювати цей код, то або ви не підключили C++17, або ваш компілятор не повністю підтримує C++17. В останньому випадку просто оновіть версію вашої IDE/компілятора.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (4 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *