main.c里没有直接调用getCRC16()但加入了相应的头文件就可以编译了

2019-07-14 14:06发布



在crc.c文件里定义了这么一个函数,crc.h文件里也只有这个函数的声明。
u16 getCRC16(volatile u8 *ptr, u8 len);

在另一个.c文件里的某个函数调用该函数,并在.c文件开始时#include crc.h。不过第一个参数给的是16位数组的指针。
编译时,提示错误:
....Userspi.c(111): error:  #167: argument of type "u16 *" is incompatible with parameter of type "u8 *"

然后,在主程序main.c里,加入include "crc.h",编译就通过了。
请教:main.c里并没有直接调用 getCRC16(),为何加入了相应的头文件就可以编译了?


-------------------------------------------------------------

更新上传下工程文件.
还是想不通,为什么在main.c里 include "crc.h"后编译能通过?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
04860860686
1楼-- · 2019-07-15 16:54
 精彩回答 2  元偷偷看……
zrl12123456
2楼-- · 2019-07-15 21:36
好多人都答非所问,楼主又不是问为什么错了,楼主问的是为什么错误会莫名其妙的消失
zrl12123456
3楼-- · 2019-07-16 03:32
同学,我觉得你不要纠结这个问题了。
我本来想见识以下你说的奇观,可惜没见识到。我用的是keil 5.16a版本,不管注释不注释,都会报错。

我不知道你是什么版本,居然会出现这样的情况。

其实不管报错不报错,最重要的是自己知道这样写代码是不严谨的,不报错不代表不出错。
谦谦三君子
4楼-- · 2019-07-16 09:05
zrl12123456 发表于 2019-2-20 08:15
同学,我觉得你不要纠结这个问题了。
我本来想见识以下你说的奇观,可惜没见识到。我用的是keil 5.16a版本,不管注释不注释,都会报错。

感谢.
我用的是5.14版本.
不纠结这个问题了,继续解决其他问题.
zhhx1985
5楼-- · 2019-07-16 11:52
main里包含的是 crc.h,而crc.h又没写错,为啥要报错?没出错自然能编译通过!

函数本身有问题,才会报错,函数本身没问题,系统就认为没错,调用的时候你不按照事先给系统说的(原来函数定义的格式)做,系统自然不干了,这不是欺负人吗,开始告诉我这个,后来给个别的参数,不干,罢工.....

于是乎就有了你后面的结果
谦谦三君子
6楼-- · 2019-07-16 14:12
 精彩回答 2  元偷偷看……

一周热门 更多>