c - _Atomic 类型限定符和类型说明符之间有区别吗?

标签 c

为什么标准会造成这种差异?

似乎两者都以相同的方式指定原子类型

最佳答案

原子类型说明符:-:)

Syntax:     _Atomic ( type-name );

你可以像这样声明一个原子整数:

        _Atomic(int) counter;

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

如果实现不支持原子类型,则不得使用原子类型说明符。 原子类型说明符中的类型名称不得引用数组类型、函数类型、原子类型或限定类型。

与原子类型关联的属性仅对左值表达式有意义。

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;

It specifies that p has the type ‘‘pointer to volatile atomic int’’, a pointer to a volatile-qualified atomic type.

引用类型为对象类型的指针类型以外的类型不得限制限定。 _Atomic修改的类型限定符不得为数组类型或函数类型。 与限定类型关联的属性仅对左值表达式有意义。

如果同一限定符在同一说明符限定符列表中多次出现,无论是直接出现还是通过一个或多个 typedef,其行为与只出现一次相同。如果其他限定符与 _Atomic 一起出现说明符限定符列表中的限定符,结果类型是如此限定的原子类型。

关键词_Atomic单独用作类型限定符。只要进行了适当的转换,包括通过强制转换运算符,实现就可以放宽对相应非原子类型具有相同表示和对齐方式的要求。

关于c - _Atomic 类型限定符和类型说明符之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26463074/

相关文章:

c - 在 C 中,在没有 "\n"的情况下获取输入的最佳方法是什么?

c - 在医学图像重建实现中改善局部性并减少缓存污染

c - 如何返回一个数组字符串,其中字符串数组与C中的其他字符串数组组合?

c++ - 在Visual Studio中使用cygwin编译的dll的库函数出错

c++ - 可以从纹理生成法线贴图吗?

c - Qsort导致内存丢失

c - 如何设置C盘

c++ - Openssl 线程安全回调函数注册,包括直接调用和间接调用

c - 如何找到 BST 中小于或等于给定值的节点数? (AVL 树)

c - 关于 GCC 编译器和链接器的问题