Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';这两者之间的区别是什么;原子的;及;“cstdatomic”是什么;?_C++_C++11_Atomic - Fatal编程技术网

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++中的新名称。