На этом уроке мы поговорим о том, что такое расширения компилятора, полезны ли они и как их выключить.
Расширения компилятора
Стандарт языка C++ определяет правила поведения программ при определенных обстоятельствах. И в большинстве случаев компиляторы также будут следовать этим правилам. Однако многие компиляторы вносят свои собственные изменения в язык программирования, часто для улучшения совместимости с другими версиями языка (например, C99), или по историческим причинам. Эти специфичные для компилятора варианты поведения называются расширениями компилятора.
Используя расширения компилятора, вы получаете возможность писать программы, несовместимые со стандартом языка C++. Программы, использующие нестандартные расширения, обычно не компилируются другими компиляторами (которые не поддерживают эти же расширения), или вообще могут работать не так, как нужно.
К сожалению, расширения компилятора часто включены по умолчанию. Это особенно вредно для новичков в программировании, которые могут подумать, что специфическое поведение, вызванное расширениями компилятора, является частью официального стандарта языка C++ (когда, на самом деле, это не так).
Поскольку расширения компилятора очень редко требуются для решения большинства задач, и приводят к тому, что ваши программы не соответствуют стандарту языка C++, то рекомендуется отключать расширения компилятора.
Совет: Отключите расширения компилятора, чтобы ваши программы оставались совместимыми со стандартами языка C++ и работали в любой системе.
Примечание: Настройки, приведенные ниже, применяются для каждого проекта отдельно. Вам нужно будет это всё проделывать при создании нового проекта, либо создать шаблон с этими настройками и уже по этому шаблону создавать новые проекты.
Отключение расширений компилятора
Пользователям Visual Studio
Чтобы отключить расширения компилятора в Visual Studio, щелкните правой кнопкой мыши по названию вашего проекта в меню "Обозреватель решений" > "Свойства"
:
В диалоговом окне вашего проекта убедитесь, что в пункте "Конфигурация"
установлено значение "Все конфигурации"
. Затем перейдите на вкладку "C/C++" > "Язык"
и в пункте "Отключить расширения языка"
выберите значение "Да (/Za)"
:
После этого нажмите "Применить"
и "ОК"
.
Пользователям Code::Blocks
Отключить расширения компилятора можно через меню "Settings" > "Compiler"
:
Затем на вкладке "Compiler Flags"
найдите пункт "Treat as errors the warnings demanded by strict ISO C and ISO C++ [-pedantic-errors]"
и поставьте возле него галочку, после чего нажмите "OK"
:
Пользователям GCC/G++
Вы можете отключить расширения компилятора, добавив флаг -pedantic-errors
в командную строку компиляции.
При отключении расширений компилятора в Visual Studio -в пункте "Отключить расширения языка" выберите значение "Да (/Za), возникает Ошибка C2467 недопустимое объявление анонимного "struct", при подключении заголовочного файла #include <Windows.h> для подключения кирилицы.
Было бы полезно это указать так как эта рекомендация (по подключению <Windows.h>) указывается в уроке 7, проблема 1, Как использовать кириллицу в программах C++? Что приводит к ошибкам.
Спасибо большое за уроки! Очень понятно, и подробно!
Доброго времени суток! Такой вопрос: если отключить расширения, тогда как подключить кириллицу?
Також важливо встановити у самій консолі шрифт Lucida Console
і також підключити
работает на linux
или