我有一个解决方案,只需(添加和)包含一些文件,就可以轻松地为微控制器项目添加功能。当包含头文件时,硬件的整个初始化自动发生。此方法基于全局静态对象(的构造函数):
的main.cpp :
#include "led.h" // <-- Led gets initialized automagically
int main ()
{
Led::TurnOn ();
// ...
Led::TurnOff ();
}
led.h :
class Led
{
public:
Led () noexcept;
public:
static void TurnOn ();
static void TurnOff ();
};
led.cpp :
/* Compiler calls constructor before first use of any method in
this compilation unit */
Led theLed;
Led::Led () noexcept // <-- Shall not throw
{
// Initialize led
}
void Led::TurnOn ()
{
// Turn led on
}
void Led::TurnOff ()
{
// Turn led off
}
我想知道,是否应该使用单例/工厂方法。但它们似乎都暗示延迟初始化(因此在运行时不是确定性的)或需要程序员显式调用某些初始化方法。 (我知道我的例子也是非确定性的)
所以我的问题:&#34; 我有什么其他选择来实现类似的行为?&#34;并且可能:在嵌入式项目中初始化硬件的标准方法是什么(不需要对任何硬件进行去初始化)?
编辑:纠正了误导性措辞