次のようなコンパイル時定数を作成することは可能ですか:
// event.h
#define REGISTER_EVENT_TYPE() ... // Returns last_returned_number+1
// header1
#define SOME_EVENT REGISTER_EVENT_TYPE()
// header2
#define SOME_OTHER_EVENT REGISTER_EVENT_TYPE()
どこSOME_EVENTが0にSOME_OTHER_EVENTなり、1になります。
次のコードを試しました:
#define DEF_X(x) const int x = BOOST_PP_COUNTER;
#define REGISTER_EVENT_TYPE(x) BOOST_PP_UPDATE_COUNTER()DEF_X(x)
#include REGISTER_EVENT_TYPE(SOME_EVENT_TYPE)
ただし、eats 定数宣言を含めます。