如何使用avr-gcc在C/C++中执行预主要初始化?

Mat*_*och 9 c c++ initialization arduino avr-gcc

为了确保之前运行一些初始化代码main(使用Arduino/avr-gcc),我有以下代码:

class Init {
public:
    Init() { initialize(); }
};

Init init;
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够简单地写:

initialize();
Run Code Online (Sandbox Code Playgroud)

但这不编译......

是否有一种不那么冗长的方式来达到同样的效果?

注意:代码是Arduino草图的一部分,因此该main函数是自动生成的,不能修改(例如initialize在任何其他代码之前调用).

更新:理想情况下,初始化将在setup函数中执行,但在这种情况下,还有其他代码,具体取决于之前发生的代码main.

Ada*_*eld 13

您可以使用GCC的constructor属性来确保在main()以下情况之前调用它:

void Init(void) __attribute__((constructor));
void Init(void) { /* code */ }  // This will always run before main()
Run Code Online (Sandbox Code Playgroud)