このコードを理解するのに苦労しています。
#define TABLE \
STATE(STATE_1, true) \
STATE(STATE_2, false) \
STATE(STATE_3, true)
enum State_t
{
#define STATE( state, valid) state,
TABLE
#undef STATE
NUM_STATES
}
State_t列挙型にはSTATE_1、STATE_2、STATE_3、NUM_STATES = 3があることは知っていますが、このメカニズムを理解するのに苦労しています。誰かが親切に説明してもらえますか?
また、ここで、重複する状態を定義したいと思います。たとえば、次のようになります。
#define TABLE \
STATE(STATE_1, true) \
STATE(STATE_2, false) \
STATE(STATE_3, true) \
STATE(STATE_2, true)
ただし、これにより、STATE_2が再定義されるため、コンパイラエラーが発生します。State_tenumにState_t={STATE_1、STATE_2、STATE_3}を残し、可能であればNUM_STATES = 4を、おそらく#ifndefを使用して作成するにはどうすればよいですか。これができるかどうかはわかりませんが、あなたのアイデアを共有してください。
ありがとうございました。