两者有什么区别-std=c++11
and -std=gnu++11
作为 gcc 和 clang 的编译参数?同样的问题与c99
and gnu99
?我了解 C++ 和 C 标准,我感兴趣的是参数的差异。
我在某处读到它与某些扩展有关,但我不清楚哪些扩展以及如何在新项目中选择一个或另一个。
正如您自己所发现的,这两个选项之间的区别在于是否启用违反/扩展 C++ 标准的 GNU 扩展。描述了 GNU C++ 扩展here。您还可以使用大多数 GNU C 扩展(已描述here) 在您的 C++ 程序中。阅读有关-Wpedantic
海湾合作委员会选项here.
请注意,某些扩展在使用时仍然有效-std=c++11
,只要它们不违反标准。例如,当使用 MinGW 编译器时,我需要扩展才能工作Boost.Lexical_Cast
。但是,只要您不使用其中任何一个,您最好坚持标准而不进行扩展,以获得最大的可移植性。如果您发现自己被迫更改编译器,这可能会派上用场。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)