GCC原子buitlins是否与std = C99一起使用?

时间:2015-09-03 14:22:44

标签: c c++11 gcc

我正在使用这种内置的原子方法link 提到:

  

以下内置函数大致符合要求   对于C ++ 11内存模型。

但我尝试使用std=C99std=C89编译这些方法。该程序编译,我得到了正确的结果。这里有什么我想念的吗? C99C89也有内存模型吗?

1 个答案:

答案 0 :(得分:4)

它是一个编译器扩展,因此它允许提供标准允许的功能之外的功能,但该页面不能明显表示可以在C中使用。

幸运的是,gcc确实有很好的online documents,如果我们查看例如4.9系列document on C extensions __atomic Builtins指向同一页面。

因此,这表明它在C中使用是有效的,它将符合文档中规定的要求,因此它将在C99​​中与在C ++中一样工作。通常,如果在C和C ++之间实现功能/扩展的方式不同,文档会注意到这一点,例如compound literals有显着差异。