【发布时间】:2019-05-17 10:36:45
【问题描述】:
我正在尝试使用 llvm-clang 8.0 编译一个使用 cppwinrt 的类。目前唯一的障碍是clang 找不到experimental/resumable 中定义的协程内在函数的实现。这些是 VC++ 标头 experimental/resumable 中定义的内在函数:
extern "C" size_t _coro_resume(void *);
extern "C" void _coro_destroy(void *);
extern "C" size_t _coro_done(void *);
#pragma intrinsic(_coro_resume)
#pragma intrinsic(_coro_destroy)
#pragma intrinsic(_coro_done)
根据 clang 文档,这些是 clang 中的协程内在函数:
void __builtin_coro_resume(void *addr);
void __builtin_coro_destroy(void *addr);
bool __builtin_coro_done(void *addr);
如果我用它编译的 clang 手动替换标头中的内在函数。然而,这显然不是一个可移植的解决方案。无论如何我可以使用一些 pragma hack 或编译时标头替换来获得相同的结果吗?
【问题讨论】:
标签: c++ clang c++17 coroutine c++-winrt