首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C17希望我如何初始化我的原子?

C17希望我如何初始化我的原子?
EN

Stack Overflow用户
提问于 2018-02-17 13:20:57
回答 2查看 1.3K关注 0票数 11

C17标准反对ATOMIC_VAR_INITstdatomic.h,这意味着它仍然支持它,但希望它不被使用。在C17中初始化原子的正确方法是什么?

与非原子类型相同:

代码语言:javascript
复制
atomic_int foo = 42;

或者是新的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-02 20:22:53

C17可以使用通常的显式初始化来初始化atomics:

代码语言:javascript
复制
atomic_int n = 42;

C17刚刚从7.17.2.1的句子中删除了两个单词“使用ATOMIC_VAR_INIT”。

票数 9
EN

Stack Overflow用户

发布于 2018-04-27 09:38:12

基于那份文件,节DR 454,使用宏使得不可能知道在哪种状态下是变量。

代码语言:javascript
复制
atomic_int guide1 = ATOMIC_VAR_INIT(42); /* known value(42); WHAT STATE? */

但使用正常的分配也是未定的,如下图所示。

代码语言:javascript
复制
atomic_int guide2;        /* indeterminate value; indeterminate state */
atomic_int guide3 = 42;   /* known value(42); indeterminate state */

要将变量置于已知状态,必须使用staticatomic_init函数。

代码语言:javascript
复制
static atomic_int guide4;  /* known value(0); valid state */
static atomic_int guide5 = 42; /* known value(42); valid state */
atomic_int guide6;
atomic_init(&guide6, 42); /* known value(42); initialized state */

但这是我唯一能找到的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48841767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档