我很难理解这段代码。
#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_t 枚举仍然有 State_t={STATE_1, STATE_2 , STATE_3} 并且如果可能的话 NUM_STATES=4,也许使用#ifndef。我不确定这是否可以做到,但请分享您的想法。
谢谢你。