поддержка стандартов g++

Я немного озадачен, прочитав это: на GCC 4.5 онлайн-руководство --- раздел стандарты.

они объясняют это

первоначальный стандарт ISO C++ был опубликован в качестве стандарта ISO (ISO/IEC 14882:1998) и дополнен техническими исправлениями, опубликованными в 2003 году (ISO/IEC 14882:2003). Эти стандарты называются C++98 и C++03, соответственно. GCC реализует большинство C++98 (экспорт является заметным исключением) и большинство изменений в C++03.

но они не говорят, поддерживает ли gcc "голый" 98 C++ или только исправленный C++03. В разделе "язык C" объяснение более ясно:

ошибки в стандарте ISO c 1999 года были исправлены в трех технических исправлениях, опубликованных в 2001, 2004 и 2007 годах. GCC не поддерживает нескорректированную версию.

Итак, мой вопрос: это также относится к g++ (без поддержки нескорректированного стандарта) ?

единственные 4 варианта для выбора стандарта g++ - это -std=c++98, -std=gnu++98,-std=c++0x и -std=gnu++0x. Это верно ?

и последний subquestion: что такое тогда ? Он используется только в режиме с ?

Edit:

-ANSI синоним-std=c89 (для C) или-std=c++98

2 ответов


gcc не поддерживает нескорректированный стандарт, он нацелен на (хотя и не достигает 100%) соответствие C++03. Технически, существует только один текущий стандарт C++ и версия, включая TC1 это. Как говорится, " поддерживает большинство изменений в C++03. Чтобы выбрать этот стандарт... используйте один из вариантов -ansi или -std=c++98".

нет поддержки или опции для выбора устаревшей нескорректированной версии стандарта 1998 года.


по крайней мере, насколько я знаю, Нет, нет способа "отключить" поддержку (любой из) новых функций C++03.

-ansi распознается передней частью C. Чтобы узнать больше о том, какие компоненты распознают какие переключатели, вы можете использовать g++ -v --help (это производит много вывода, поэтому вы обычно хотите передать его в less или что-то в этом роде).