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

メイン関数で使用される構造体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 に答える