error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function typ

报错信息:
……(路径:) error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function type
翻译:
显式调用前的括号必须具有(指针到-)函数类型
error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function typ_第1张图片
错误原因:
把原本数组的方括号写成圆括号了(对比源代码查出来的),改正回方括号、表示成数组格式,即可:
error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function typ_第2张图片

但是,此时又新产生了两个错误:L6200E:……multiply defined……(显示重复定义了)
我用全工程搜索USART1_REC_LEN的办法,发现仅在驱动函数头文件中 和 中断服务函数中,出现过两次(是因为此时,主函数中的还未写完,打算写完后再重新检查),等完成整篇代码移植后,L6200E自行消失。

待到代码全部功能移植以后,发现仍然存在L6200E与L6218E的报错,最终发现错因全部都是由于拼写错误引起的,比如上面第二张图中的库函数USART_Get_ITStatus,其实是USART_GetITStatus,这类错误引起的报错代码如果上网查询前人经验的话,不但无法正确解决问题(前人在拼写出错时与自己的拼写错误一致的概率是多少?)而且还会越带越深、越查越复杂,所以,一方面要细心,同时也说明“复制-粘贴”是多么有用,这个“复制-粘贴”用好了确实也是需要一定水平的。
最终消除错误后的结果如下(我之前还有一个错误就是把USART1_RX_STA写成 了USART1_RX_SAT,这个在主函数、中断服务函数中的错误机器都能识别并准确定位出来,但是驱动函数中的定义处写错了机器就无法识别报错了,只会用一个L6218E来报错,且定位在main.o中,读者可自行试验):
error: #109: expression preceding parentheses of apparent call must have (pointer-to-) function typ_第3张图片
上图红框中的拼写错误,在编译时机器并不会当作拼写错误,而是当成另一个叫做USART1_RX_SAT变量的定义,应有的变量在编译时做缺失处理,在对象代码中体现并报错。

你可能感兴趣的:(文本处理,STM32,研发管理)