在进行stm8开发(开发工具 IAR)的时候,编译总是报错 error: expected a ")",点击这个错误,定位到了系统头文件 <iostm8110lf3.h>中,问题是这是官方提供的头文件,并不可能有语法错误。
报错定位在 <iostm8110lf3.h>中
试了很多方法,发现把出错的地方更名就好了。但是这毕竟是官方文件,乱改不好,所以百度了一下,希望有更好的解决。
无意间百度到了这个论坛关于编译错误#18 expected a")"-OpenEdv-开源电子网http://www.openedv.com/posts/list/6492.htm给了我灵感。既然 更名错误消失 --> 那么推出发生了变量名冲突。于是我对其他引用文件一番搜索,果然找到了同名定义 在另一个文件中的存在。
<stm8f10x.h> 中找到的同名的声明
既然问题已经定位:因为不同文件起了同样的变量名导致编译不过。那么解决办法就有了:对其中一个进行更名,避开冲突。
基于改动较少的原则。我选择了更改 <iostm8110lf3.h>中的OPT->OPT0,文件中,其他用到OPT的也都改成使用OPT0就成了。(PS:最好是更改<stm8f10x.h>,我的文件系统中此文件属于自定义。但本人选择改官方文件是简单,而且这软件以后用不着了)
将OPT->OPT0 相关引用的修改