当前位置:网站首页>_GLIBCXX_USE_CXX11_ABI 宏的作用
_GLIBCXX_USE_CXX11_ABI 宏的作用
2022-08-03 10:04:00 【Ruo_Xiao】
在 GCC 5.1 版本中,libstdc++ 引入了一个新特性,其中包括 std::string 和 std::list 的新实现。为了符合 C++11 标准,这些更改是必要的,该标准禁止 Copy-On-Write 字符串并要求列表跟踪其大小。
这样虽然符合了 C++11 的标注,旧版就无法兼容了。为了解决这个问题,对于旧版而言,GCC 5.1 添加了 __cxx11 命名空间,GCC5.1 或者说 C++11 规范下的 string 和 list,实际上是std::__cxx11::string 和 std::__cxx11::list,所以我们一般的 using namespace std 就会变成形如using namespace std::__cxx11 的样子。也就是说,有旧版(c++03 规范)的 libstdc++.so,和新版(c++11 规范)的 libstdc++.so 两个库同时存在。
为了避免两个库到底选择哪一个的麻烦,GCC5.1 就引入了 -D_GLIBCXX_USE_CXX11_ABI 来控制编译器到底链接哪一个 libstdc++.so,
-D_GLIBCXX_USE_CXX11_ABI=0 链接旧版库
-D_GLIBCXX_USE_CXX11_ABI=1 链接新版库
栗子:
add_definitions(-D _GLIBCXX_USE_CXX11_ABI=0)
(SAW:Game Over!)
边栏推荐
猜你喜欢
随机推荐
2022T电梯修理考试题及答案
Redis的基础与django使用redis
ClickHouse查询语句详解
Redis实现分布式锁
媒体查询代码
夏季整治百日行动进行时:700余交通安全隐患被揪出
type=“module“ 你了解,但 type=“importmap“ 你知道吗
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
报告:想学AI的学生数量已涨200%,老师都不够用了
三大产品力赋能欧萌达OMODA5
使用GBase 8c数据库的时候,遇到这种报错“[[email protected] ~]$ /home/gbase/script/gha_ctl install -p……
MySQL的主从复制
Index (3)
梯度消失和梯度爆炸
投稿有礼,双社区签约博主名额等你赢!
Ultra-detailed Asp.net uses SSL two-way authentication, one article is enough
SQL教程之递归 CTE Common Table Expression
C语言二维数组用一维数组进行调用
MySQL 主从切换步骤
2022年起重机械指挥培训试题模拟考试平台操作