您的位置:首页 > 其它

MDK (keil) 没有使用到的函数编译时候会有警告的解决

2018-01-11 17:20 351 查看
在使用MDK编写STM32代码时,有些函数如果没用到会报警告:



函数定义如下:



但是STM32有很多库函数,为什么没使用到的就不会报警告呢?

这里有一个编译细节,就是函数的有效范围问题。库函数并没有使用static关键字,因为它可能会给其他文件使用,所以编译器会进行全编译,不做整个工程的调用检查,所以也不会报错,但是这样编译出来的HEX文件会大。

而我写的函数明确指定了static,因此编译器缩小了检查范围,因为在该文件中并没有使用到该函数,所以很智能地发出警告,同时不把函数编译进HEX,所以编译出来的HEX会小,虽然有警告,但这是个比较好的编程风格。

以上是出现警告的原因,那有没有方法既缩小HEX,又不报警告呢?

如果坚持要使用比较好的static方式,一定会有警告,没有办法。

要想没有警告,就不能使用static,效仿库函数,MDK编译器提供了一种专门手段用于缩小库函数的,可以借来使用,在编译选项中把”为每个函数生成一个单文件“勾上:



在勾上它之前:



勾上它之后:



可以看出,没用的函数没有被编译进最终的HEX文件,并且不会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐