syntax error; found ` ; ' expecting ` )' 和Error TCC: insufficient number of arguments to `IIC_RegRead'

做单片机开发时,出现标题所示很令我头疼的错误信息。

 

仔细检查,在分号前的括号是匹配的,函数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 的地方都报如标题所示错误……

你可能感兴趣的:(syntax error; found ` ; ' expecting ` )' 和Error TCC: insufficient number of arguments to `IIC_RegRead')