我对全局静态对象构造函数有什么替代方法

时间:2016-01-27 19:50:55

标签: c++ constructor static global

我有一个解决方案,只需(添加和)包含一些文件,就可以轻松地为微控制器项目添加功能。当包含头文件时,硬件的整个初始化自动发生。此方法基于全局静态对象(的构造函数):

的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;并且可能:在嵌入式项目中初始化硬件的标准方法是什么(不需要对任何硬件进行去初始化)?

编辑:纠正了误导性措辞

0 个答案:

没有答案