读书人

help!为什么会发生异常

发布时间: 2012-03-06 20:47:55 作者: rapoo

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);

读书人网 >C语言

热点推荐