2014-12-06 35 views
1

我有一个运行g++ 4.4.7并且只支持#include <cstdatomic>一个系统。我有另一个系统运行g++ 4.9.1,只支持#include <atomic>如何判断哪个版本的g ++是使用`atomic`而不是`cstdatomic`的最早版本?

我怎样才能发现的g++最早的版本只支持<atomic>,或者相反的g++最新版本的支持<cstdatomic>,没有建立所有的编译器和做手工检索?

更广泛地说,我该怎么回答任意系统头X这个问题?

+0

它似乎是C++ 11和旧版C++的区别。这个问题的答案可以帮助:http://stackoverflow.com/questions/17185734/whats-the-difference-between-atomic-and-cstdatomic – Jonathan 2014-12-06 01:05:40

+1

@Jonathan,这是绝对的差异。问题在于,g ++的版本逐渐支持越来越多的C++ 11功能,但它们没有记录在哪个版本中哪些头文件可用。 – merlin2011 2014-12-06 01:06:59

+0

@Jonathan,现有的回答这个问题,其中两个错误的,所以没有太大的帮助:) – 2014-12-06 15:51:53

回答

2

有一个gcc git mirror,我会看这些东西。 <cstdatomic>首次出现在2008年4月this commit并于2009年12月消失this one。据我所知,<atomic>出现在同一个提交。望着tags,后者是圆的约当GCC 4.5发布了,果然,通过源代码树浏览时间,<cstdatomic> 4.5消失(但保持在以后的版本4.4),并<atomic>出现在它的地方。

附录:源代码树看的地方是libstdc++v3/include/<cstdatomic>c_global,在std<atomic>

0

更广泛地说,我该怎么回答任意系统头X这个问题?

Wintermute显示最可靠的方法,但你也可以只检查的发布说明:

https://gcc.gnu.org/gcc-4.4/changes.html#cplusplus
https://gcc.gnu.org/gcc-4.5/changes.html#cplusplus
https://gcc.gnu.org/gcc-4.6/changes.html#cplusplus
https://gcc.gnu.org/gcc-4.7/changes.html#cxx
https://gcc.gnu.org/gcc-4.8/changes.html#cxx
https://gcc.gnu.org/gcc-4.9/changes.html#cxx
https://gcc.gnu.org/gcc-5/changes.html#cxx

他们并不总是列出所有的变化,但它可能比周围的源代码库洞穴探险快得多。

相关问题