叶子 发表于 2023-12-2 23:59:56

WARNING L57: UNCALLED FUNCTION 新建自动下载工程编译报错

本帖最后由 叶子 于 2023-12-3 00:04 编辑

看这个帖子
主要我在论坛搜索“WARNING L57: UNCALLED FUNCTION”关键字,新手真找不到。
按这个标题补一下

解决方法如下帖:
引入了USB库之后为什么会产生警告-已解决
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4666
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

REMOVEUNUSED



四汐 发表于 2023-12-3 01:27:55

报错原因:这是程序中存在定义但未被调用的函数导致的警告;
Note:警告不会影响程序的编译,但如果出现这个,建议查看一下程序中有哪些函数代码会编译但其实实际上并未被调用;解决办法:第一种就是像那位版主提供的方法,直接在系统里面把这个类型的警告给禁了,但是这样也会有一点副作用,就是会照成单片机内存资源的浪费,这些程序实际上还是被编辑到了单片机的内存里面,但是你实际上没有使用,所用编译的时候,就会提示你。如果你禁用这个警告,那么以后你在本工程下编写的子程序,如果出现了类似的情况,编译的时候也不会提醒,就会照成更大的资源浪费。第二种方式(推荐),就是找到那些未引用的函数,把它注释掉,用到的时候,再取消注释。既不会造成资源浪费,也可以发现自己编写的程序有那些不足的地方。我这里编译的时候就会出现内存不够的警告!!!应该导致有些程序没有编译进去(因为内存不够了),所以又引发一系列的报错,导致编译失败。
然后我到编译器里面把 内存模式 从 tiny 改成 xsmall 模式,就不会报错啦

然后,(搞到这里我才发现{:4_167:})因为官方没有给出c文件,而是直接给出编译好的lib文件(虽然我也不太清楚什么是lib文件),所以没办法去注释掉那些程序。ps:我以为直接注释掉 stc32_stc8_usb.h 这个头文件里面的声明函数就可以,结果发现没有用,编译的时候还是有警告。至于官方的76号文件程序编译的时候不会报错,可能是以为那个主程序里面实际上是用到了所有这些程序的,所以没有警告。
总之,我还是不太建议使用第一种方式。如果你这个工程已经全部完成了,不需要再修改了,然后觉得这些警告有些碍眼,那屏蔽了也就无所谓了。注:本人也是小白一个,以上内容仅为个人猜测哈








LAOXU 发表于 2023-12-3 09:21:05

官方库编译的不严谨, 建议官方对每个函数, 分开独立建个文件, 再重新编译一下, 即可.

什么提示警告都没有了, 用不到的程序不会装载.

rengran 发表于 2023-12-3 12:15:46

LAOXU 发表于 2023-12-3 09:21
官方库编译的不严谨, 建议官方对每个函数, 分开独立建个文件, 再重新编译一下, 即可.

什么提示警告都没有 ...

库里面的函数定义应该不少,分开文件夹建立就不会出现警告了吗?

LAOXU 发表于 2023-12-3 12:21:40

rengran 发表于 2023-12-3 12:15
库里面的函数定义应该不少,分开文件夹建立就不会出现警告了吗?

是的, 这是 KeilC51/C251 , 建立独立库的标准写法.

LAOXU 发表于 2023-12-3 12:22:33

不是分开文件夹, 是每个函数, 单独建个文件,

rengran 发表于 2023-12-3 12:26:31

LAOXU 发表于 2023-12-3 12:22
不是分开文件夹, 是每个函数, 单独建个文件,

官方给出的是一个库文件,要是每个函数都是一个库,未免也太复杂了吧

LAOXU 发表于 2023-12-4 06:36:18

rengran 发表于 2023-12-3 12:26
官方给出的是一个库文件,要是每个函数都是一个库,未免也太复杂了吧

不是每个函数都要一个库,可将多个独立文件, 一起编译成一个库 .这个库包含 n 个独立函数库
页: [1]
查看完整版本: WARNING L57: UNCALLED FUNCTION 新建自动下载工程编译报错