gpt4 book ai didi

c++ - 使用 GCC 编译 C++ 时如何包含 C11 头文件?

转载 作者:太空狗 更新时间:2023-10-29 23:49:11 24 4
gpt4 key购买 nike

在 C++ 项目中,我使用了一个包含一些 C11 头文件的 C 库。它不会用 GCC 编译。看这个简单的代码:

// main.cc
#include <stdatomic.h>

int main()
{
return 0;
}

运行 gcc main.cc -lstdc++,它会提示:error: ‘_Atomic’ does not name a type。然而,clang main.cc -lstdc++ 就像一个魅力。我想知道有什么不同,我如何使用 gcc 编译它?

最佳答案

要包装使用原子的 C header ,您可以使用 _Atomic 的其他拼写并定义一个将其转换为有效 C++ 的宏:

#ifndef __cplusplus
# include <stdatomic.h>
#else
# include <atomic>
# define _Atomic(X) std::atomic< X >
#endif

int foo(_Atomic(unsigned)* toto);

两个原子接口(interface)都是在两个委员会之间同步开发的,因此除了语法问题之外,它们应该在任何提供 C 和 C++ 的合理平台上都是二进制兼容的。

关于c++ - 使用 GCC 编译 C++ 时如何包含 C11 头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45342776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com