C++ では、宣言されたときに関数ポインターとして自動的にマップ (またはベクトル、この場合は重要ではありません) に追加され、後で自動的に呼び出される関数を作成したいと考えています。たとえば、ユニット テスト フレームワークを作成していて、ユーザーに各ユニット テストを次のように宣言させたい場合に便利です。
UNIT_TEST_FUNCTION(function_name){
// do something
}
代わりに、このようなものが呼び出されます
void function_name(){
//do something
}
int temp = register_function("function_name", function_name);
たとえば、 register_function() は、関数ポインターのマップにユーザー定義関数を追加します。したがって、基本的には、関数定義の後にコード行を追加して、定義された関数に対して何らかのアクションが自動的に実行されるようにするメカニズムが必要です。おそらくマクロを使用してこれは可能ですか?