在GCC 4.6中测试C ++ 11

时间:2016-02-23 14:56:51

标签: c++11 gcc

这无法在GCC 4.6下编译:

#if __cplusplus >= 201103L
#include <ratio>
#endif
根据此错误,

__ cplusplus应在GCC 4.6中设置为“1”: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

我应该如何测试GCC 4.6中的C ++ 11支持?

编辑:我想在使用GCC 4.6和std比率与GCC 4.8和-std = c ++ 11构建时使用Boost比率。其余的代码已准备就绪,只是这个包含无法编译。

2 个答案:

答案 0 :(得分:1)

因为即使是理论上支持这个或那个标准版本的编译器也可能存在错误,最好依赖已知能产生有效结果的特定版本。

在G ++中,您可以这样做:

#if __GNUC__ == 4 && __GNUC_MINOR__ >= 9
  // use C++11 features
#else if __GNUC__ == 5
  // use C++11 features
#else
  // maybe don't use some features
#endif

答案 1 :(得分:0)

试着编译这个程序:

int main()
{
  auto i = 0;
  return 1;
}

在命令行中使用命令g++ -std=c++11 -c filename.cppauto是c ++ 11的特性,因此如果编译时没有错误,则表示编译器支持C ++ 11。

但总的来说,对于gcc,在5.1版之前,对C ++ 11的支持是实验性的。因此,直到5.1版本,gcc才支持C ++ 11必须提供的所有内容。