アップデート3:
どうでも。私はちょっと私が探していたものを手に入れました。以下は、クラス内の一意の識別子を示しています。
static const int _counter_start = __COUNTER__;
static const int val1 = __COUNTER__ - _counter_start;
static const int val2 = __COUNTER__ - _counter_start;
アップデート2:
この機能を使用して、メッセージマップに似たものを実装します。
class a
{
...
MAP_BEGIN()
MAP_DECL...
MAP_END()
...
};
重要なのは、MAP_DECLごとに、マクロを2か所に展開する必要があるということです。
class a
{
virtual void func()
{
...
//does something with the decl declaration
}
...
//also expand some stuff here
}
Boostプリプロセッサは、(理論的には)MAP_DECLをシーケンスに蓄積し、最後にそれをfunc()に展開できるようにする必要があります(同時にクラスフィールドを展開します)。
アップデート1:
現在、Boostプリプロセッサライブラリを使用しています。私は現在、シーケンスに何かを追加する必要があるたびに、次のような新しいマクロ変数/定義を作成するのに行き詰まっています。
Boost Preprocessorシーケンスを拡張しようとしていますが、現時点ではこれを実行できません。
#define SEQ (w)(x)(y)(z)
#define SEQ2 BOOST_PP_SEQ_PUSH_BACK(SEQ, a)
オリジナル:
次のコードがあるとします
#define CUR 2
#define CUR CUR + 2
2行目に1行目のCURの値を使用させるにはどうすればよいですか?