help!!!为什么会发生错误
#ifndef GET_UINT32_LE
#define GET_UINT32_LE(n,b,i)
{
n = ( (unsigned long) (b)[(i) ] )
| ( (unsigned long) (b)[(i) + 1] < < 8 )
| ( (unsigned long) (b)[(i) + 2] < < 16 )
| ( (unsigned long) (b)[(i) + 3] < < 24 );
}
#endif
我在定义这个宏的时候为什么编译不过去啊?给我的提示信息是error C2109: subscript requires array or pointer type 望高手指教啊
[解决办法]
换行需要\符号转接
[解决办法]
#ifndef GET_UINT32_LE
#define GET_UINT32_LE(n,b,i) /
{ /
n = ( (unsigned long) (b)[(i) ] ) /
| ( (unsigned long) (b)[(i) + 1] < < 8 ) /
| ( (unsigned long) (b)[(i) + 2] < < 16 ) /
| ( (unsigned long) (b)[(i) + 3] < < 24 ); /
}
#endif
[解决办法]
#ifndef GET_UINT32_LE
#define GET_UINT32_LE(n,b,i)\
n = ( (unsigned long) (b)[(i) ] ) \
| ( (unsigned long) (b)[(i) + 1] < < 8 )\
| ( (unsigned long) (b)[(i) + 2] < < 16 )\
| ( (unsigned long) (b)[(i) + 3] < < 24 )\
#endif
不要带{},不然写代码替换后会在{}后加了个分号。
:)
或者要用就用do{}while(0);