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


寻找原因
楼主百思不得其解,试过将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。前者出现的原因是:__INLINE的宏定义编译器并未找到,于是编译器将其当成静态变量,因此提示将变量类型定义为int 类型并且提示缺少分号。解决方法将__INLINE改为inline即可。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)