找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 6674|回复: 3

【C】gcc 4.8有个BUG:缺少stdatomic.h

[复制链接]

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
发表于 2018-3-6 07:05:30 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
解决办法还是靠autoconf自动根据配置脚本来查找stdatomic.h这个头文件,如果找不到,就自己用gcc钦定原子操作函数(https://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Atomic-Builtins.html)来造个轮子。

这,是个BUG。因为GCC官网说:gcc在4.7就支持c11标准了。然而C11标准说:你得有stdatomic.h这个头文件,作为C语言标准库自带原子操作库。这年头怎么能没有原子操作呢?

然而,gcc忘了把stdatomic.h加入进去。这个BUG在版本4.9修复了。
总不能在config的时候判断gcc版本吧?那就太不清真了。C语言不是这么用的。但考虑到CentOS 7的yum install gcc安装的竟然是4.8.5(注意日期是2018-3-6),CentOS 6的肯定更旧。所以用autoconf找stdatomic.h吧。

虽说使用centos-release-scl可以直接使用最新的gcc。

看4.9的版本Release:http://gcc.gnu.org/gcc-4.9/changes.html

参考资料:
<stdatomic.h> in GCC 4.8?
https://stackoverflow.com/questi ... atomic-h-in-gcc-4-8

本帖被以下淘专辑推荐:

回复

使用道具 举报

30

主题

207

回帖

2732

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2116 个
贡献
206 次
宅之契约
0 份
在线时间
469 小时
注册时间
2016-7-12
发表于 2018-3-11 07:19:28 | 显示全部楼层
这年代没点bug才稀奇呢
回复 赞! 靠!

使用道具 举报

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
 楼主| 发表于 2018-3-11 16:00:27 | 显示全部楼层
Ayala 发表于 2018-3-11 07:19
这年代没点bug才稀奇呢

比起bug,我觉得glitch更令人感到喜闻乐见。
回复 赞! 靠!

使用道具 举报

15

主题

39

回帖

246

积分

用户组: 中·技术宅

UID
5832
精华
0
威望
2 点
宅币
188 个
贡献
0 次
宅之契约
0 份
在线时间
39 小时
注册时间
2020-4-15
发表于 2020-4-30 11:27:05 | 显示全部楼层
我现在用的就是gcc 4.80的版本
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-3-28 17:04 , Processed in 0.047966 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表