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

gcc为什么编译不过下面的代码?该怎么处理

2012-02-29 
gcc为什么编译不过下面的代码?.../*theFieldEXTractmacro*/#defineCSL_FEXT(reg,PER_REG_FIELD)\(((reg)&C

gcc为什么编译不过下面的代码?
...
/*   the   Field   EXTract   macro   */
#define   CSL_FEXT(reg,   PER_REG_FIELD)                                                                                 \
        (((reg)   &   CSL_##PER_REG_FIELD##_MASK)   > >   CSL_##PER_REG_FIELD##_SHIFT)
...
  response   =   CSL_FEXT(hAta-> regs-> DMAENGINE.BMISP,   ATA_BMISP_IORDYINT);
...
我使用gcc   -E   xxx.c
发现这段代码被翻译成:
response   =   (((hAta- "regs- "DMAENGINE.BMISP)   &   (0x0008u))   " "   (0x0003u));
不知何故?

是不是没有加上什么编译选项?

[解决办法]
我输出:

response = (((hAta-> regs-> DMAENGINE.BMISP) & CSL_ATA_BMISP_IORDYINTMASK ) > > CSL_ATA_BMISP_IORDYINT_SHIFT);


\后没别的东西了吧?

[解决办法]
把所有的宏用实际内容替换了就是了 .....
[解决办法]
0x01c40000u
unsigned的一个十六进制表示的整数

'\x7f '
十六进制表示的一个字符,字符其实就是int,本质上没什么区别
printf( "the value is %x.\n ", 'a ');//输出61,即十进制的97

热点排行