我在libstdc++
中遇到Bug 58800,导致我的部分代码出现段错误。我有一个解决方法,但我不想在libstdc++
的固定版本可用时使用它。检查libstdc++
版本(通过ifdef
)的正确方法是什么?理想情况下,哪个版本会受到此错误的影响?
答案 0 :(得分:1)
您可以使用__GLIBCXX__
宏来检查libstdc++
的版本信息。 (ABI Policy Appendix的第7节中有一个值列表。)
该错误完成了已修复的版本列表,但是搞清楚错误何时引入可能会更棘手。如果您使用autoconf
,我建议编写一个测试,如果存在错误,该测试会崩溃。
答案 1 :(得分:1)
libstdc ++附带GCC,因此正确的方法是通过测试其__GNUC__
,__GNUC_MINOR__
和__GNUC_PATCHLEVEL__
predefined macros来检查GCC版本。
如果您在Clang中使用libstdc ++,则可以测试__GLIBCXX__ > 20131020UL
是否修复了该错误的日期。该日期之后的版本应该包含修复程序。