有什么区别-std=c++11-std=gnu++11作为GCC和Clang的汇编参数?同样的问题c99gnu99?我知道C ++和C标准,这是我感兴趣的参数的差异。

我已经在某个地方读到它与某些扩展有关,但是我尚不清楚哪些是哪些以及如何在一个或另一个项目之间选择新项目。

答案

正如您发现的那样,这两个选项之间的区别是启用了违反/扩展C ++标准的GNU扩展名是否已启用。描述了GNU C ++扩展这里。您也可以使用大多数GNU C扩展(描述)这里)在您的C ++程序中。阅读有关-WpedanticGCC选项这里

请注意,使用时仍然有些扩展-std=c++11,只要它们与标准不矛盾。例如,使用MINGW编译器时,我需要工作的扩展名Boost.Lexical_Cast。但是,只要您不使用其中任何一个,就最好坚持使用标准,而无需扩展,以最大程度的便携性。如果您发现自己被迫更换编译器,这可能会派上用场。

来自: stackoverflow.com