【发布时间】:2010-08-29 17:15:54
【问题描述】:
读到这里我有点疑惑:Gcc 4.5 online manual --- Standards section.
他们解释了这一点
最初的 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语言”部分,解释更清楚:
在 2001、2004 和 2007 年发布的三份技术勘误中更正了 1999 ISO C 标准中的错误。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 的同义词
【问题讨论】:
-
为什么要支持未更正的标准?
-
这是一个检查我是否正确理解C++98、C++03等与gcc doc之间的关系的问题;不是“我想”。
-
请注意,C++03 标准文本和 C++98 文本之间的很大一部分差异是对歧义的澄清等 - 当编译器尝试实现 C++98 时发现的变化.在那里,GCC 无法合理地支持 C++98。