5

如果我在-std使用 GCC4.8.1 编译我的 C++ 应用程序时未指定该选项,它是否默认应用 c++11 值?

我阅读了 GCC 文档中的文字,但仍然不确定。我的英语不好,所以可能是我不好。

-fext-numeric-literals(仅限 C++ 和 Objective-C++)接受虚构的、定点的或机器定义的文字数字后缀作为 GNU 扩展。关闭此选项后,这些后缀将被视为 C++11 用户定义的文字数字后缀。默认情况下,所有 C++11 之前的方言和所有 GNU 方言都处于启用状态:-std=c++98、-std=gnu++98、-std=gnu++11、-std=gnu++1y . 对于 ISO C++11 及更高版本 (-std=c++11, ...),此选项默认关闭。

4

2 回答 2

11

2018 年更新:在最新版本的 gcc 中,默认选项为-stdnow -std=gnu++14


来自gcc 标准2.2 C++ 语言

如果没有给出 C++ 语言方言选项,则默认值为 -std=gnu++98。

因此,如果要启用 C++11 功能,则必须添加选项-std=c++11-std=gnu++11(对于带有 GNU 扩展的 C++11)

于 2013-07-30T07:05:13.687 回答
3

从手册页:

       c++98
       c++03
           The 1998 ISO C++ standard plus the 2003 technical corrigendum and some additional
           defect reports. Same as -ansi for C++ code.

       gnu++98
       gnu++03
           GNU dialect of -std=c++98.  This is the default for C++ code.

就像有人想知道 C++03 发生了什么。

于 2013-07-30T12:11:20.973 回答