宏定义中Error[Pe029]: expected an expression

在定义读写字节宏时出现Error[Pe029]: expected an expression。
我的定义如下:
  #define READ_RAM(p, type)  (*(((type)*)(p)))//错误
  #define READ_RAM8(p)           READ_RAM(p, u8)
用法:
  u8 test = 0;
  u8 *p = &test;
  u8 value = READ_RAM8(p);//Error[Pe029]: expected an expression
后来逐步推敲,验证。终于搞清楚
  u8 value = *((u8 *)(p));//OK
  u8 value = *(((u8) *)(p));//error
所以,正确写法是:
  #define READ_RAM(p, type)  (*((type *)(p)))//错误
  #define READ_RAM8(p)           READ_RAM(p, u8)

你可能感兴趣的:(firmware)