有没有办法在 cmake 中为创建的所有目标创建定义。到目前为止当我
add_compile_definitions(MYDEFINITION)
Run Code Online (Sandbox Code Playgroud)
在我的根 CmakeLists.txt 中,它似乎只为该文件中创建的目标创建这些定义。但我想为子目录中创建的所有目标创建定义。做这个的最好方式是什么?
我一直在为嵌入式环境开发一个简单的框架。我决定要使用虚拟调用,CRTP还是使用switch语句。有人告诉我vtables在嵌入式中的性能很差。
从这个问题开始,
vvable性能下降vs. switch语句,
我决定运行自己的测试。我用三种不同的方法来调用成员函数。
我从来没有尝试过使用基本的CRTP模式,但是etl :: function应该是该模式所使用的机制的变体。我使用MSVC并在ARM Cortex M4上获得类似性能的时间是
纯虚拟呼叫明显更快。我是想念某些东西还是虚拟通话,不如人们所说的那么糟糕。这是用于测试的代码。
class testetlFunc
{
public:
uint32_t a;
testetlFunc() { a = 0; };
void foo();
};
class testetlFunc2
{
public:
uint32_t a;
testetlFunc2() { a = 0; };
virtual void foo() = 0;
};
void testetlFunc::foo()
{
a++;
}
class testetlFuncDerived : public testetlFunc2
{
public:
testetlFuncDerived();
void foo() override;
};
testetlFuncDerived::testetlFuncDerived()
{
}
void testetlFuncDerived::foo()
{
a++;
}
etl::ifunction<void>* timer1_callback1; …Run Code Online (Sandbox Code Playgroud)