【发布时间】:2019-06-09 17:09:45
【问题描述】:
我正在将许多 C 驱动程序集成到一个 C++ 集成嵌入式项目中。 转向 OOP 方法,我将函数和变量组织到类中,每个类代表一个系统模块。
声明全局对象,包含编译器 RTS 库启动代码,以便在程序执行到达 main() 之前使用它们的构造函数构建它们。
这会延迟 watchdog_timer 禁用,这是从 main() 调用的,因此系统不会启动。
我有一个全局对象,其中包含其他对象作为成员,每个对象都有其重要的构造函数;在全局对象构造函数开始时停止看门狗定时器并不能解决问题。
如何解决这个问题?
【问题讨论】:
-
我建议重新设计以尽量减少全局变量的使用。全局对象引入了一大堆问题,例如未指定的构造顺序。在禁用看门狗计时器后,我将在
main()中创建所有对象。这也使您可以更轻松地显式控制对象的构造顺序。这确实意味着您需要找到一种方法将对象(或指向它们的指针/引用)传递给需要它们的代码,但这在实践中相对简单。
标签: c++ initialization watchdog