C++ 什么';这两者之间的区别是什么;原子的;及;“cstdatomic”是什么;?
有人能澄清一下包含选项之间的区别吗C++ 什么';这两者之间的区别是什么;原子的;及;“cstdatomic”是什么;?,c++,c++11,atomic,C++,C++11,Atomic,有人能澄清一下包含选项之间的区别吗 #包括和#包括 我猜没有,因为这是同样的行为 我这样问是因为在我的debian系统上,我只有原子,在我的kubuntu系统上,我有cstdatomic Debian上的编译器:版本4.7.2(Debian 4.7.2-4) Kubuntu上的编译器:版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5) 是C++原子操作库。 是C原子操作库的C++版本。 两个都会给你,例如:代码> STD::ActuixChar < /Cord
#包括
和#包括
我猜没有,因为这是同样的行为
我这样问是因为在我的debian系统上,我只有原子,在我的kubuntu系统上,我有cstdatomic
- Debian上的编译器:版本4.7.2(Debian 4.7.2-4)
- Kubuntu上的编译器:版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)
<代码> 是C++原子操作库。
<代码> <代码>是C原子操作库的C++版本。
两个都会给你,例如:代码> STD::ActuixChar < /Cord>,但是只有C++版本有<代码> STD::原子< /COL> < < /P>
作为一般规则,C++中的C报头应该通过删除<代码> .<代码>扩展和准备>代码> C <代码>的名称:<代码> STATCOMPONE .H <代码>成为<代码> CSTATCODATABOR> <代码>。这将把C头包含到命名空间
std
中
还要注意,
stdatomic.h
(和cstdatomic
因此)是C11,atomic
是C++11,这可能解释了编译器支持方面的差异。两个现有答案都是错误的,大多数注释也是错误的
不是任何标准中定义的标题
它是在旧的C++0x草案中定义的,但不在最终的C++11标准中,只有)
您不应该使用
,除非您坚持使用GCC4.4,并且乐于使用不完整且有缺陷的C++11原子版本。(我不知道为什么Kubuntu的GCC4.6包含标题,它不在上游GCC4.6版本中,它必须是Ubuntu、Kubuntu或Linaro补丁。)
是标准的C++11头文件,您可以依赖它来实现任何符合C++11标准的实现
<代码> <代码>是C11头,但是C++ 11库是基于C99库的,所以不包括<代码> <代码>,并且不提供对应于它的<代码> >代码> .< /p>@ BAAM“反向一般规则”:一个看起来像<>代码> /Cube >的C++头可能是C标题的C++等效代码<代码> <代码>。p
stdatomic.h
来自C11,而不是C99。原子论是由C和C++标准委员会共同制定的2011个标准。那么,<代码> CSTDIO < /C>和<代码> IoSturiS/<代码>有什么不同?当然,它或多或少是相同的功能,但是一个是C++,另一个是C遗产。支持引用:旧的头移到了用GCC 4.5进行的LIbSTDC++中的新名称。