OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4389|回复: 2

MDK4.54 其他C文件中的函数引用、声明问题的疑惑

[复制链接]

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2012-12-4
在线时间
0 小时
发表于 2013-12-19 18:20:40 | 显示全部楼层 |阅读模式
网上看到的具体实例,很好很强大。
该实例是基于"环形队列+内存动态分配+DMA"的串口驱动。有兴趣的小伙伴可以下载看看。
强烈推荐。当然,基础知识是关于“内存管理”的。
具体代码可参看附件。
我的疑问是:模块化设计中调用其他C文件内函数,不是要在对应的.h文件内先声明为外部函数喽?
而实例中并没有啊。
该实例中,main.c中主函数调用了“RCC_Configuration()”函数进行串口1的初始化。
而“RCC_Configuration()”函数的定义在“HardInit.c"文件内。
搜索整个工程文件,仅看到了“RCC_Configuration()”的调用和“void RCC_Configuration(void)”函数的定义。
并未看到具体的声明。
怎么可以调用呢?为什么不报警呢?main()函数内怎么知道“RCC_Configuration()”在哪里呢?
当然,不仅仅是“RCC_Configuration()”函数,其他函数也没有声明就调用了。。
是MDK工程中具体是哪里设置了呢?请高手给个指导。谢谢了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2012-12-4
在线时间
0 小时
 楼主| 发表于 2013-12-19 23:29:59 | 显示全部楼层

没人回复,只能自问自答了。。

经过几个小时的摸索和思考,发现,其实很简单。。。

模块化设计中一个xxx.c文件对应一个xxx.h文件。一般该xxx.c文件内的A函数供外部调用时都会在xxx.h里做声明。

其他yyy.c文件需要调用该A函数时只需要包含#include "xxx.h"即可正常调用。

而其实,不加入#include "xxx.h"这个也是可以调用的,只不过编译时会弹出“警告”而已。

在我看到的实例中,恰好是没有进行函数声明,那怎么没见“警告”信息呢?

编程者将“警告”信息给屏蔽了。具体修改在以下路径中:

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-20 00:06:47 | 显示全部楼层
回复【2楼】lqz9057:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 15:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表