поддержка стандартов 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
или что-то в этом роде).