【发布时间】:2020-07-17 20:20:33
【问题描述】:
有没有办法通过宏来检测目标平台是否支持 std::mutex?
我想为我们的一个开源项目做出贡献,因为他们正在使用 std::mutex。我们正在使用 gcc-arm-none-eabi,其中 std::mutex 不可用(但 RTOS 特定互斥锁)。
如果我可以通过预处理器宏检测是否没有可用的操作系统,我将启用 (ifdef) 代码以提供自定义互斥锁。
我可以测试 gcc-arm-none-eabi 但由于那里还有其他“裸机”编译器,我宁愿测试功能的缺失而不是编译器/目标平台的存在.
【问题讨论】:
-
@Eljay 是的,但没有针对这种特殊情况的功能测试宏。
-
“std::mutex is not available”是指整个标头
<mutex>不可用,std::mutex类未定义或存在,但不允许使用是吗? -
@Yksisarvinen std::mutex 未定义。标头始终存在。
中的 ifdef 不可移植。