1

我想知道是否有办法从我的主函数中定义一个具有特定实例名称的全局变量?我必须按位值访问数组,为此我需要输入:

state.reg[ 4 * mc_binary[ 18 ] + 2 * mc_binary[ 17 ] + 1 * mc_binary[ 16 ] ]

我能有......吗:

#define state.reg[ 4 * mc_binary[ 18 ] + 2 * mc_binary[ 17 ] + 1 * mc_binary[ 16 ] ] registerA

我的 main 函数中使用state的结构实例在哪里?stateType

4

1 回答 1

2

这是我推荐的:

#define BIT_INDEX3(bit2, bit1, bit0) \
    (4 * (bit2) + 2 * (bit1) + (bit0))

// use in code:
    state.reg[ BIT_INDEX3(mc_binary[18], mc_binary[17], mc_binary[16]) ]

您不想变得棘手,但是如果您经常从同一个数组中提取(就像您在此处所做的那样),您可以为此进行另一个定义:

#define BIT_INDEX_ARRAY3(a, i2, i1, i0) \
    BIT_INDEX3((a)[i2], (a)[i1], (a)[i0])


// use in code:
state.reg[ BIT_INDEX_ARRAY3(mc_binary, 18, 17, 16) ]
于 2013-02-02T02:02:04.500 回答