首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

help!为什么会发生异常

2012-03-06 
help!!!为什么会发生错误#ifndefGET_UINT32_LE#defineGET_UINT32_LE(n,b,i){n((unsignedlong)(b)[(i)])|(

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

热点排行