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