2013-02-02 161 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