做单片机开发时,出现标题所示很令我头疼的错误信息。
仔细检查,在分号前的括号是匹配的,函数IIC_RegRead的参数个数,怎么数都是正确的。
仔细分析调用了IIC_RegRead的几个语句,有的报错,有的不报错。
IIC_RegRead的函数原型如下
int IIC_RegRead(uchar slaveaddr,uchar regaddr)
正确的调用如下 :
IIC_RegRead(slaveaddr,XYZ_DATA_CFG_REG)&(~FS_MASK);
PS:全是大写的实参,是个宏定义,类似#defing XYZ_DATA_CFG_REG 0x03之类的。
报错的调用如下:
IIC_RegRead(mslaveaddr,0x03)&(~0x01);
怎么看都觉得这错误报的很搞怪啊。
后来,我把0x03,0x01之类的立即数,全改用宏。原以为就没有错误了。这次debug有点蒙猜的意味。具体原理,鬼知道。
再次错误。
后来发现,有这么一条语句#define mslaveaddr 0x1e;
所以凡是有mslaveaddr 的地方都报如标题所示错误……