小编Joh*_*ehm的帖子

如何在编译时检查是否支持C ++标准库(STL)

我正在抽象多个微控制器上的中断处理。ARM Cortex M-3 / 4确实支持STL,但ATMega328p(已大量使用)不支持C ++ STL。我仍然想利用std::function基本C样式函数指针的附加功能来注册特定中断的回调。我还没有测试过,但是被告知与简单的函数指针相比​​,C ++ lambda可以做很多事情,尤其是在捕获变量和引用时。

我想更改定义的标头类(如有必要)和实现的类(如有必要,可能没有必要,因为实现只会丢失),以便在编译时删除成员函数定义,具体取决于控制器支持或不支持STL。我想知道C ++是否提供这样的测试,或者是否可以通过包含STL标头和某种方式的测试来做到这一点,包括是否失败?

...

#include <functional>

class InterruptVectorTable
{
    bool setCallback(ValueType InterruptNumber, void (*Callback)(void));
    bool setCallback(ValueType InterruptNumber, std::functional<void(void)> Callback);
}
Run Code Online (Sandbox Code Playgroud)

如果不允许同时使用两个定义,那么我想最好使用std::function

c++ stl compilation compile-time

1
推荐指数
1
解决办法
82
查看次数

标签 统计

c++ ×1

compilation ×1

compile-time ×1

stl ×1