我想知道是否有办法从我的main函数中定义一个具有特定实例名称的全局变量?我必须按位值访问数组,所以我需要输入:
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
其中state
是我的主函数中使用的stateType
结构的实例?
答案 0 :(得分: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) ]