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

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

9 голосов
/ 29 августа 2010

Я немного озадачен, читая это: Онлайн-руководство по 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 ++ (без поддержки нескорректированного стандарта)?

В этом случае для выбора стандарта g ++ можно выбрать только 4 варианта: -std=c++98, -std=gnu++98, -std=c++0x и -std=gnu++0x. Это правильно?

И последний подвопрос: что тогда является опцией -ansi? Используется только в режиме C?

Редактировать:

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

Ответы [ 2 ]

9 голосов
/ 29 августа 2010

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

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

3 голосов
/ 29 августа 2010

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

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

...