我如何判断哪个版本的 g++ 是使用“原子”而不是“cstdatomic”的最早版本

How do I tell which version of g++ is the earliest version that uses `atomic` instead of `cstdatomic`?

本文关键字:版本 cstdatomic 原子 g++ 何判断 判断      更新时间:2023-10-16

我有一个运行g++ 4.4.7的系统,只支持#include <cstdatomic>。我有另一个运行g++ 4.9.1的系统,仅支持#include <atomic>.

如何在不构建所有编译器并进行手动搜索的情况下发现仅支持 <atomic> 的最早版本的 g++,或者相反,g++ 的最新版本支持 <cstdatomic>

更广泛地说,如何回答任意系统标头 X 的此问题?

有一个 gcc git 镜像,我会在其中寻找这些东西。 <cstdatomic>于 2008 年 4 月首次出现,并于 2009 年 12 月通过此提交消失。据我所知,<atomic>出现在同一个提交中。查看标签,后者大约是 gcc 4.5 发布的时间,果然,浏览源代码树,<cstdatomic> 4.5 消失了(但在后来的 4.4 版本中保留了),<atomic>出现在它的位置。

附录:在源代码树中查找的位置是libstdc++v3/include/<cstdatomic>c_global<atomic>std

更广泛地说,如何回答任意系统标头 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#cxxhttps://gcc.gnu.org/gcc-5/changes.html#cxx

它们并不总是列出所有更改,但它可能比在源存储库中探索要快得多。