每个libstdc ++版本的`__GLIBCXX__`的值 [英] Value of `__GLIBCXX__` for each libstdc++ release
问题描述
宏 __ GLIBCXX __
包含libstdc ++版本的时间戳,例如,来自gcc文档(
The macro __GLIBCXX__
contains the time stamp of libstdc++ releases, e.g., from gcc documentation (https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html)
__ GLIBCXX __
libstdc ++的当前版本,采用压缩的ISO日期格式,为无符号长整数.有关特定宏在特定版本中的价值的详细信息,请查阅ABI政策和准则附录.
__GLIBCXX__
The current version of libstdc++ in compressed ISO date format, as an unsigned long. For details on the value of this particular macro for a particular release, please consult the ABI Policy and Guidelines appendix.
我正在寻找自4.9.0版本以来的所有版本的值(包括4.8.x等较小版本的版本).
I am looking for the values for all releases since the release of 4.9.0 (including releases of smaller versions like 4.8.x).
libstdc ++的文档似乎没有提供此信息(它仅提供gcc 4.7.0之前的日期).
The documentation of libstdc++ does not seem to provide this information (it only provides the dates up to gcc 4.7.0).
在哪里可以找到 __ GLIBCXX __
的值?有人有吗?
Where can I find the values of __GLIBCXX__
? Does anybody have them?
ABI政策和准则附录( https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html )说
The ABI Policy and Guidelines appendix (https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html) says
库预定义宏的增量增加.对于3.4.0之前的版本,宏为 GLIBCPP .对于更高版本,它是 GLIBCXX .(libstdc ++项目在其整个源代码中从CPP慷慨地更改为CXX,以允许"C"预处理器使用CPP宏名称空间.)这些宏定义为库的发布日期,压缩ISO日期格式,为无符号长整型.
Incremental bumping of a library pre-defined macro. For releases before 3.4.0, the macro is GLIBCPP. For later releases, it's GLIBCXX. (The libstdc++ project generously changed from CPP to CXX throughout its source to allow the "C" pre-processor the CPP macro namespace.) These macros are defined as the date the library was released, in compressed ISO date format, as an unsigned long.
,但是仅提供高达GCC 4.7.0的宏的值.仍在此处列出特定GCC版本的发布日期:
but then only provides the values of the macro up to GCC 4.7.0. Still the day of a particular GCC releases are listed here:
https://gcc.gnu.org/releases.html
但是例如,对于发布日期为"2014年7月16日"的GCC 4.9.1,ISO日期格式为20140716, __ GLIBCXX __
的值为20140617(请注意,已更改7和6)
but for example for GCC 4.9.1 with release date "July 16, 2014" the ISO date format is 20140716 and the value of __GLIBCXX__
is 20140617 (notice the 7 and 6 have been switched).
推荐答案
想要的信息无论如何都是无用的,因此您应该以其他方式解决问题.
The information you want is useless anyway, so you should solve your problem a different way.
GCC 4.9.3是在GCC 5.3之后发布的,因此它在该宏中具有较晚的日期,因此您不能只执行以下操作:
GCC 4.9.3 was released after GCC 5.3, so it has a later date in that macro, so you can't just do something like:
#if __GLIBCXX__ > 20150422 // GCC 5.1 release
因为对于4.9.3来说是正确的,但是并不具备5.1的所有功能.
because that would be true for 4.9.3, but that doesn't have all the features that 5.1 has.
大多数GNU/Linux发行版也不发行FSF官方发行版,而是构建快照,其中将包含快照的日期,而不会在发行日期的任何列表中.并且给定日期的5.x分支的快照与给定日期的6.x分支的快照具有相同的日期,因此您无法区分它们.
Most GNU/Linux distros don't ship official FSF releases either, they build snapshots, which will have the date of the snapshot, which won't be in any list of release dates. And a snapshot from the 5.x branch on a given day will have the same date as a snapshot from the 6.x branch on a given day, so you can't tell them apart.
这篇关于每个libstdc ++版本的`__GLIBCXX__`的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!