背景

楼主在写代码时遇到个问题,查找莫名其妙的地方报错expect a “)”或expect a “;”,如下图:

错误代码段error提示

寻找原因

楼主百思不得其解,试过将KEIL的编译器版本改为6,此时这段代码不再报故障,但是并不知道根本原因,最后在CSDN查到了这篇文章
链接: https://blog.csdn.net/zhzht19861011/article/details/5823537,文中提到:

6.error:  #18: expected a ")"
如果是出现在c文件中, 多半是因为少了一个")",或者错误行有编译器不识别的字符
如果出现在头文件中,错误行又是一个函数声明,多半是因为在函数声明中有编译器不认识的字符.

再仔细看看代码上下文,这才找出原因所在。

柳暗花明

原因在于,没有结合前面的error起来一起看,编译器不认识uint32_t,因此也就无法定义出ulCurrentInterrupt这个变量,因此在后文中ulCurrentInterrupt右边的括号编译器并未识别到,进而提示该段缺少“)”。

异曲同工

IAR中也存在类似问题,如下图:
错误代码段error提示
这两个error也是一样,得解决前面的error,不能光看后一个error。前者出现的原因是:__INLINE的宏定义编译器并未找到,于是编译器将其当成静态变量,因此提示将变量类型定义为int 类型并且提示缺少分号。解决方法将__INLINE改为inline即可。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐