関数定義を置き換えるマクロを作成しようとしています。このマクロは、関数の名前を配列に登録して、他のマクロが配列の要素で何かを実行できるようにする必要があります。
新しい関数を追加するたびにリストを編集することなく、コンソールで使用できる関数のリストを作成したいと思います (実際には複数のリストです)。
少し読んだ後、ブーストプリプロセッサを調べました。残念ながら、新しい配列を「保存」する方法はないようです。私がやりたいことは次のようなものです:
#define SOME_ARRAY (0, ())
#define CONSOLE_COMMAND(a) \
#redefine SOME_ARRAY BOOST_PP_ARRAY_PUSH_BACK(SOME_ARRAY, #a) \
void a(some_arguments)
残念ながら、私の知る限り、redefine は存在せず、#define はマクロでは使用できません (間違っていたら訂正してください)。
ブーストのプリコンパイラのSLOTを見てみましたが、一度設定した変数も変更できないと思います。
独自のプリプロセッサを作成する以外にこれを行う方法はありますか? そうではありませんか?(Code::Blocks で MinGW を使用する)。