0.10 – Настройка компилятора: расширения компилятора

Добавлено 27 марта 2021 в 15:00

Стандарт 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++ / CppCode::BlocksIDELearnCppVisual StudioДля начинающихКомпиляторОбучениеПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.


  • 2024-04-10Isa Abasov

    В исходнике рекомендуется В режиме совместимости, поставить значение - Да. А расширение языка стоит - Нет. ?