有什么区别
-std=c++11
和-std=gnu++11
作为gcc和clang的编译参数有什么区别? 与c99
和gnu99
同样的问题? 我了解C ++和C标准,这是我感兴趣的参数差异。
我已经在某处读到它与某些扩展有关的问题,但我不清楚哪些扩展名以及如何在新项目之间进行选择。
正如你自己发现的那样,两种选择之间的区别在于是否启用了违反C ++标准的GNU扩展。 这里描述GNU扩展。 请注意,使用-std=c++11
时,某些扩展仍然可以生效,只要它们与标准不矛盾即可。
例如,当使用MinGW编译器时,我需要一个可用于Boost.Lexical_Cast
的扩展。 但是,只要你没有使用它们,你最好坚持标准而不扩展以实现最大的便携性。 如果您发现自己被迫更改编译器,这可能会派上用场。