2013-02-02 157 views
1

我想知道是否有一種方法來定義一個全局變量,它具有我主函數中特定實例的名稱?我有權獲得位值的陣列,這樣做,我需要鍵入:#Define變量範圍

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結構的情況下我主功能?

+1

所以你試過了,發生了什麼?你的隊友不能理解代碼了嗎? –

+0

甚至可以工作嗎? –

+0

我沒有團隊夥伴。我並沒有試圖讓它起作用,我已經完成了這個程序,但是回想起來,我想知道這是可能的還是功能上等同的方法。 – MrWolvwxyz

回答

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) ] 
+0

謝謝,我正在學習使用OpenCL的宏定義和其他預處理器的優勢。只是試圖嘗試他們的潛力。再次感謝您的答案! – MrWolvwxyz