【发布时间】:2017-04-14 16:43:36
【问题描述】:
目标是允许头文件“注册”一个初始化函数,以便 main 可以遍历这些函数并调用它们。我偶然发现了一个使用 __attribute__ 的解决方案,但它似乎是 GCC-only (https://stackoverflow.com/a/37082249/7867841)。
// header1.h
void myInitializer(){}
REGISTER_THIS(&myInitializer);
// header2.h
void myInitializer2(){}
REGISTER_THIS(&myInitializer2);
// main.cpp
...
for_each_registered_ptr(){ call_ptr(); } // calls myInitializer and myInitializer2
...
有没有通用的解决方案?如果更容易实现,可以使用类或类型切换功能。
【问题讨论】: