155

gcc 和 clang 的编译参数-std=c++11和as有什么区别?与和-std=gnu++11相同的问题?我了解 C++ 和 C 标准,我感兴趣的是参数的差异。c99gnu99

我在某处读到它与一些扩展有关,但我不清楚哪些扩展以及如何为新项目选择一个或另一个。

4

1 回答 1

102

正如您自己发现的那样,这两个选项之间的区别在于是否启用了违反/扩展 C++ 标准的 GNU 扩展。此处描述了 GNU C++ 扩展。您还可以在您的 C++ 程序中使用大多数 GNU C 扩展(在此处描述)。在此处-Wpedantic阅读有关GCC 选项的信息也很有用。

请注意,某些扩展在使用 时仍然有效-std=c++11,只要它们不违反标准即可。例如,当使用 MinGW 编译器时,我需要一个工作的扩展Boost.Lexical_Cast。但是,只要您不使用它们中的任何一个,您最好还是坚持标准而不进行扩展以获得最大的可移植性。如果您发现自己被迫更改编译器,这可能会派上用场。

于 2012-05-16T06:51:04.340 回答