乐此不疲 发表于 2024-7-11 12:50:01

也问STC32G工程移植了USB库编译后有很多警告的去除方法

最近在学习冲哥的STC32G单片机学习视频,课后自己试着写代码,在做USB不断电自动烧录工程时移植了STC_USB的相关库,编译后有40个***57的警告,提示的是usb库中很多函数没有使用,因为库函数中的函数原型我找不到而只是在usb.h文件中注释掉那些不用的函数声明但是并没有什么作用,带着问题在站里翻看帖子找答案,功夫不负有心人还真有一贴说的就是我面临的问题:
引入了USB库之后为什么会产生警告-已解决
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4666
(出处: 国芯技术交流网站)
通过坛友给出的方法真的就去除了那40个警告,方法见下图:


虽然问题可以解决但心里还是没有撂下,又带着问题打开了stc32g试验箱的第76#例程,编译正常后打开魔术棒界面查看相关选项,发现例程并不是通过这个指令消除那些警告的,而是添加了警告代码57来对那些警告进行消除的,如下图:


上述两种方法都能消除那些警告,但结果有所不同,对于同一段工程代码而言、坛友的方法(添加指令的方法)应用后最终编译完成的文件只有2K多大小,而官方例程的方法(也就是添加57的方法)编译完成后的文件有6K多,我对keil5编译软件不是很熟悉,请各位指点一下用那一个方法去除那些警告更安全,如果对其他应用都没有影响的话,我更喜欢坛友分享的添加指令的方法,毕竟他的方法对于单片机内存更友好。




乘风飞扬 发表于 2024-7-11 13:26:52

本帖最后由 乘风飞扬 于 2024-7-11 13:31 编辑

使用"REMOVEUNUSED"可以让程序里没有调用的函数、变量等不参加编译,减少生成代码所需的资源。
这本是最好的方案,可惜当前的keil C251编译器使用这种方法可能会出现BUG,存在一定的风险。
具体情况可参考以下帖子:
[求助]8051U-32bit模式下的一个数据类型问题
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9432
(出处: 国芯技术交流网站)

而在"disable Warming Numbers"填写"57",只是屏蔽L57警告内容。
没有调用的函数、变量还是会参加编译,结果占用的资源就多一些。

社区闲人 发表于 2024-7-11 13:36:41

使用"REMOVEUNUSED",简单粗暴又高效。

乐此不疲 发表于 2024-7-11 18:50:34

多谢两位的解答,也看了链接的问题讨论已经有了取舍的方法了,暂时没有多少代码就先“57”着吧,需要算计资源分配时再使用"REMOVEUNUSED"。
页: [1]
查看完整版本: 也问STC32G工程移植了USB库编译后有很多警告的去除方法