2
目的は、ヘッダーファイルが初期化関数を「登録」して、メインがそれらの関数を繰り返し処理して呼び出すことができるようにすることです。私は__attribute__
を使用するソリューションを見つけましたが、GCCのみ(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
...
これには汎用的な解決策がありますか?クラスや型の切り替えが容易な場合は、関数を切り替えることができます。
また価値を、このソリューションがありますC++ 11(マジックスタティックス)以降のスレッドセーフです。 –