每个libstdc ++版本的`__GLIBCXX__`的值 [英] Value of `__GLIBCXX__` for each libstdc++ release

查看:114
本文介绍了每个libstdc ++版本的`__GLIBCXX__`的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

__ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆