完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在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"后编译能通过? |
|
相关推荐
17个回答
|
|
错误提示中说明的很明白,错误位置位于“spi.c”文件的第111行代码处。所以和main没有关系的。
至于你在main中包含头文件后,使编译通过。那要从“spi.c”与main的关联去思考。 |
|
|
|
main函数中并未调用,所以不会判断
后面spi。c里调用了,传错参数了,自然是要报错的 既然知道是16位数组指针,为毛还用8位的形参?直接改成16位的不好吗? 如果不改的话,起码也加个强转.... |
|
|
|
我觉的是因为你在spi.c中调用这个getCRC16函数的时候,第一个参数的数据类型和 crc中定义的函数的数据类型不一致造成的。
操作的数据类型不一致,当然会报错了。 |
|
|
|
顶楼上的
|
|
|
|
数据指针的格式不一样,操作结果就会出错,
|
|
|
|
u8和u16数据类型不一致所致, "crc.h"里可能重新定义了。
|
|
|
|
顶楼上的
|
|
|
|
可能是getCRC16中u8与u16定义冲突了?
|
|
|
|
好多人都答非所问,楼主又不是问为什么错了,楼主问的是为什么错误会莫名其妙的消失
|
|
|
|
同学,我觉得你不要纠结这个问题了。
我本来想见识以下你说的奇观,可惜没见识到。我用的是keil 5.16a版本,不管注释不注释,都会报错。 我不知道你是什么版本,居然会出现这样的情况。 其实不管报错不报错,最重要的是自己知道这样写代码是不严谨的,不报错不代表不出错。 |
|
|
|
zrl12123456 发表于 2019-2-20 08:15 感谢. 我用的是5.14版本. 不纠结这个问题了,继续解决其他问题. |
|
|
|
main里包含的是 crc.h,而crc.h又没写错,为啥要报错?没出错自然能编译通过!
函数本身有问题,才会报错,函数本身没问题,系统就认为没错,调用的时候你不按照事先给系统说的(原来函数定义的格式)做,系统自然不干了,这不是欺负人吗,开始告诉我这个,后来给个别的参数,不干,罢工..... 于是乎就有了你后面的结果 |
|
|
|
zhhx1985 发表于 2019-2-20 08:46 问题出在,函数定义时参数指定的是8位指针,而调用时给的是16位指针. 强制转换后编译通过了. 好奇的是没有强制转换的时候,在main.c里加上#include "crc.h"也能通过编译. 可能是我编译器版本的问题.楼上的那位好心的朋友,编译时两种情况下都通不过. |
|
|
|
|
|
|
|
好多人都答非所问,楼主又不是问为什么错了,楼主问的是为什么错误会莫名其妙的消失
|
|
|
|
“非常危险的”默认类型转换,多个包含头文件可能会优先用main.c里面的(不知道你对crc.h加预编译指示了没有),而这里面仅仅是让编译器获取一个指针信息,指针的大小和类型在C中都是4字节和void*的,故后面再调用就不显示错误了。
其实error#167是一个非常负责的错误提示,早期编译器可能不会在这个上面处理的那么细致。你看即使现在处理了也很难处理完整。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2171 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1225 浏览 0 评论
2914 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2672 浏览 3 评论
5357 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-16 17:20 , Processed in 1.103173 second(s), Total 105, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号