首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C11 _Atomic说明符-vs-限定符语法不规则的理由?

C11 _Atomic说明符-vs-限定符语法不规则的理由?
EN

Stack Overflow用户
提问于 2016-04-03 03:42:03
回答 1查看 483关注 0票数 5

这里有一个相关的“什么”问题:原子类型说明符和限定符

我感兴趣的是为什么,因为C11的基本原理还没有发布,这似乎是不必要的复杂。

语法包括这两个方面(并且解决了歧义性,有利于shift进行(,而不是reduce (否则如果后面跟着declaratorabstract-declarator),则可以从declaration-specifiersspecifier-qualifier-list获得)。

代码语言:javascript
复制
atomic-type-specifier: _Atomic ( type-name )
type-qualifier: _Atomic

这将导致以下代码:

代码语言:javascript
复制
int i1;
int (i2); // valid, same as i1 - usually seen in the context of pointer-to-function or pointer-to-array
int _Atomic a1;
int _Atomic (a2); // invalid
_Atomic (int) a3; // valid, same as a1

思想:

  • _Atomic不能修改数组或函数。如果声明器周围没有多余的括号,这意味着它对#define _Atomic(x) x _Atomic是有效的(当然,如果它对#define关键字是合法的)。
  • 当它以qualifier的形式出现时,_Atomic是与const相同的语法部分,C程序员已经习惯于将const放在正确的一边,所以它不可能是“易用”的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-03 04:05:39

基本原理在N1485中找到。

_Atomic关键字也可以作为等同于_Atomic T的类型说明符在表单_Atomic(T)中使用,其中T是类型。因此,_Atomic(T) x, y;使用相同的类型声明xy,即使T是指针类型。这允许C++0x与仅C++的_Atomic(T)宏定义为atomic<T>的简单兼容性。

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

https://stackoverflow.com/questions/36381380

复制
相关文章

相似问题

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