我正在使用这种内置的原子方法link 提到:
以下内置函数大致符合要求 对于C ++ 11内存模型。
但我尝试使用std=C99
和std=C89
编译这些方法。该程序编译,我得到了正确的结果。这里有什么我想念的吗?
C99
和C89
也有内存模型吗?
答案 0 :(得分:4)
它是一个编译器扩展,因此它允许提供标准允许的功能之外的功能,但该页面不能明显表示可以在C中使用。
幸运的是,gcc确实有很好的online documents,如果我们查看例如4.9系列document on C extensions __atomic Builtins指向同一页面。
因此,这表明它在C中使用是有效的,它将符合文档中规定的要求,因此它将在C99中与在C ++中一样工作。通常,如果在C和C ++之间实现功能/扩展的方式不同,文档会注意到这一点,例如compound literals有显着差异。