原子类型说明符: - :)
Syntax: _Atomic ( type-name );
Run Code Online (Sandbox Code Playgroud)
你可以像这样声明一个原子整数:
_Atomic(int) counter;
Run Code Online (Sandbox Code Playgroud)
的_Atomic关键字可以以的形式使用_Atomic(T),其中T是一个类型,类型说明符相当于一个_AtomicT.因此,_Atomic(T) x, y;声明x和y具有相同的类型,即使T是指针类型.这允许与仅C++ _Atomic(T)宏定义的原始C++ 0x兼容.
如果实现不支持原子类型,则不应使用原子类型说明符.原子类型说明符中的类型名称不应引用数组类型,函数类型,原子类型或限定类型.
与原子类型关联的属性仅对作为左值的表达式有意义.
If the _Atomic keyword is immediately followed by a left parenthesis, it is interpreted as a type specifier (with a type name), not as a type qualifier.
原子类型限定符: - :)
_Atomic volatile int *p;
Run Code Online (Sandbox Code Playgroud)
It specifies that p has the type ‘‘pointer to volatile atomic int’’, a pointer to a volatile-qualified atomic type.
引用类型为对象类型的指针类型以外的类型不应受限制._Atomic限定符修改的类型不应是数组类型或函数类型.与限定类型关联的属性仅对作为左值的表达式有意义.
如果同一个限定符在同一个specifier-qualifier-list中出现多次,或者直接或通过一个或多个typedef,则行为与它只出现一次相同.如果其他限定符与_Atomicqualiner-qualifier-list中的限定符一起出现,则生成的类型是如此限定的原子类型.
_Atomic单独使用关键字作为类型限定符.只要进行适当的转换(包括通过强制转换操作符),允许实现放宽对相应非原子类型具有相同表示和对齐的要求.
是。它们是有区别的。当用作类型说明符时,标准将其限制为(6.7.2.4 p(3)):
原子类型说明符中的类型名称不得引用数组类型,函数类型,原子类型或限定类型。
例如
typedef int arr[5];
Run Code Online (Sandbox Code Playgroud)
arr在_Atomic用作限定符时可以是类型名称,但在用作_Atomic类型说明符时不能用作类型名称(如_Atomic (arr))
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |