潇潇雨歇pku 发表于 2016-5-31 16:19:38

同学,我觉得你不要纠结这个问题了。
我本来想见识以下你说的奇观,可惜没见识到。我用的是keil 5.16a版本,不管注释不注释,都会报错。

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

其实不管报错不报错,最重要的是自己知道这样写代码是不严谨的,不报错不代表不出错。

any012 发表于 2016-5-31 16:31:12

潇潇雨歇pku 发表于 2016-5-31 16:19
同学,我觉得你不要纠结这个问题了。
我本来想见识以下你说的奇观,可惜没见识到。我用的是keil 5.16a版本 ...

感谢.
我用的是5.14版本.
不纠结这个问题了,继续解决其他问题.:loveliness:

wofei1314 发表于 2016-5-31 17:18:46

main里包含的是 crc.h,而crc.h又没写错,为啥要报错?没出错自然能编译通过!

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

于是乎就有了你后面的结果

any012 发表于 2016-5-31 17:37:59

wofei1314 发表于 2016-5-31 17:18
main里包含的是 crc.h,而crc.h又没写错,为啥要报错?没出错自然能编译通过!

函数本身有问题,才会报错, ...

问题出在,函数定义时参数指定的是8位指针,而调用时给的是16位指针.
强制转换后编译通过了.

好奇的是没有强制转换的时候,在main.c里加上#include "crc.h"也能通过编译.
可能是我编译器版本的问题.楼上的那位好心的朋友,编译时两种情况下都通不过.

zcl201207 发表于 2016-5-31 23:44:57

:):):):):):):)

asssdz-382474 发表于 2016-6-2 03:10:56

:):):):):):):):):)

小小木 发表于 2016-6-2 09:49:24


好多人都答非所问,楼主又不是问为什么错了,楼主问的是为什么错误会莫名其妙的消失

moyanming2013 发表于 2016-6-2 10:58:57

“非常危险的”默认类型转换,多个包含头文件可能会优先用main.c里面的(不知道你对crc.h加预编译指示了没有),而这里面仅仅是让编译器获取一个指针信息,指针的大小和类型在C中都是4字节和void*的,故后面再调用就不显示错误了。
其实error#167是一个非常负责的错误提示,早期编译器可能不会在这个上面处理的那么细致。你看即使现在处理了也很难处理完整。
页: 1 [2]
查看完整版本: 关于头文件里函数声明的问题。