gpt4 book ai didi

c++ - TPCircularBuffer 中的错误 - atomic_fetch_add

转载 作者:行者123 更新时间:2023-11-28 07:56:20 24 4
gpt4 key购买 nike

我正在尝试将 TPCircularBuffer 集成到我的 Swift 项目中。 11.0/xcode 9我在 TPCircularBuffer.h 中收到以下错误:

"No matching function for call to 'atomic_fetch_add'"

文件被拖放到我的项目中,我没有做任何更改。我想知道我是否缺少一面旗帜或其他东西。或者有人知道为什么这对我不起作用吗?

#ifdef __cplusplus
extern "C++" {
#include <atomic>
typedef std::atomic_int atomicInt;
#define atomicFetchAdd(a,b) std::atomic_fetch_add(a,b)
}
#else
#include <stdatomic.h>
typedef atomic_int atomicInt;
#define atomicFetchAdd(a,b) atomic_fetch_add(a,b)
#endif

static __inline__ __attribute__((always_inline)) void TPCircularBufferConsume(TPCircularBuffer *buffer, uint32_t amount) {
buffer->tail = (buffer->tail + amount) % buffer->length;
if ( buffer->atomic ) {
atomicFetchAdd(&buffer->fillCount, -amount);
} else {
buffer->fillCount -= amount;
}
assert(buffer->fillCount >= 0);
}

最佳答案

根本问题是 atomic_fetch_add 在 Swift 中不可用,因此您不能在 .h 文件中使用它,该文件在桥接 header 中导入到 Swift。

您需要用 C 语言编写一个调用 atomic_fetch_add 的包装函数,并更改 TPCircularBuffer.h 以使用该包装函数。您可以在 .h 文件中声明包装函数,但您必须在 .c 文件中实现它,这样它就不会暴露给 Swift 编译器。

关于c++ - TPCircularBuffer 中的错误 - atomic_fetch_add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47945974/

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