keil 工程下多个C文件之间是如何联系和运行的?

keil 工程下多个C文件之间是如何联系和运行的?,第1张

在main.c或者main.c调用的.h文件里面extern另外的C文件里面的函数头就可以用了。\x0d\x0a\x0d\x0a例如你在A.c里面有一个函数是这样的。:void AAA()\x0d\x0a\x0d\x0a那么你在main.c文件的开始这样定义:extern void AAA()\x0d\x0a你在main.c里面就可以直接用AAA()了。

点击全局编译按钮

,完成后在相应目录文件夹(之前存放hex文件的路径)下即可看到生成的ethernet.lib文件。

6、lib文件生成后,还需.h文件,h文件有两种方式,一种是保留之前.c文件对应的.h文件,继续照常使用,另一种是可将单独的.h文件合并成一个新的ethernet.h,直接在main.c调用ethernet.h即可。

7、将lib文件剪切放到Ethernet文件路径下,将之前的socket.c、w5500.c等文件删除掉,头文件换成ethernet.h,工程里将ethernet.lib加入到group(ethernet文件夹)里。

8、将取消编译的文件重新打开,将编译后文件类型改回.hex文件,然后全编译,没有错误即完成。

另外,若想将一个.c文件生成一个lib文件,只需保留该.c文件进行编译,.h文件也保持不变,将工程中原先的.c文件替换成.lib文件即可。

用心写好每篇文章,分享给需要的你☺,如果对您有用希望能留下您的脚印(点赞/评论/收藏)!

stm32

c语言

keil mdk

嵌入式

注意!注意!你有一个手机待领取

巨摩互动

广告

Keil对lib封装库反汇编成C语言.pdf

502下载·22评论

2013年5月6日

把c++的exe工程编译为动态库dll静态库lib,并实现调用(超详细)

2087阅读·0评论·1点赞

2020年8月28日

源代码封装成库Lib的方法

504阅读·0评论·0点赞

2022年10月14日

STM32/keil把多个c文件编译为静态库lib

2190阅读·0评论·6点赞

2021年1月5日

C/C++ 静态库(lib)的概念和使用方法

3432阅读·0评论·4点赞

2022年5月2日

Keil 下生成LIB库文件以及如何使用LIB库文件

732阅读·1评论·0点赞

2020年12月19日

注意!注意!你有一个手机待领取

巨摩互动

广告

C语言 之 编译自己的lib库

1457阅读·0评论·1点赞

2020年8月7日

CMake交叉编译简单教程

3.2W阅读·2评论·14点赞

2018年9月7日

如何将c语言封装成dll文件,封装动态库dll与静态库lib(原理及简单实例)

2069阅读·0评论·1点赞

2021年5月21日

keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...

1587阅读·0评论·0点赞

2021年5月21日

keil 加密:编译代码成lib库

454阅读·0评论·0点赞

2022年7月28日

Keil C 里面Lib库文件的生成与调用

11下载·0评论

2020年8月4日

keil C对lib封装库反汇编成C语言

101下载·4评论

2011年4月8日

C语言编译lib库手动添加

1888阅读·0评论·0点赞

2017年6月18日

基于Keil下多文件打包生成Lib库文件的具体 *** 作

2667阅读·3评论·2点赞

2020年1月18日

Windows DOS命令行编译C/C++程序----库文件.lib的链接

1752阅读·0评论·0点赞

2019年2月21日

keil把源代码生成lib的方法

2754阅读·0评论·6点赞

2022年1月25日

keil 编译生成 .lib文件

2244阅读·4评论·1点赞

2018年1月8日

keil多文件编译

724阅读·0评论·1点赞

2022年4月3日

在keil中将文件封装为lib库文件需要注意的地方

1395阅读·0评论·0点赞

2021年11月15日

去首页

看看更多热门内容

评论1

YJer

你好,第6点中提到的,将单独的.h文件合并成一个新的ethernet.h,

LZ问题问得不详细,回答没法详细。

在KEIL中使用2个 C文件,是非常简单的。比如有一个main.c文件,和一个LCD.c文件,main.c你是如何添加到KEIL 工程中的,LCD.c就用同样的办法添加到 KEIL 工程中就行了。

难点不是使用2个C文件,而是在一个C文件中,如何使用另一个C文件的函数、变量等。

多个 C文件的设计,一般称之为 模块化设计,一个C文件就为一个设备(模块)的功能函数(如LCD.c为液晶屏的功能函数)。这种设计的程序结构阶级性是非常明显的,如main.c 可以使用LCD.c的函数,而LCD.c 不可以使用main.c的函数,这就像一个上司可以命令下属干活,而一个下属不能安排上司做事。这C语言中,这叫函数归属关系,上级叫 父函数、下级叫 子函数。基于这种归属关系,所以,在多个C文件中,只需要在父级函数内,对子函数进行 外部函数声明(extern xxxxx()),就可以正常使用 子文件中的函数了。

但模块化设计就是为了方便功能程序(一般主文件 我称之为 功能程序)的编写。如果每一个模块都需要 main.c 在开头写一堆的 extern,不仅会导致主文件的程序界面混乱不堪,模块一多,还容易出错,增加主文件工作量。于是要求,每一个模块文件,都必须带有自己的声明文件(就是对应的头文件,如LCD.h)。主文件只需要包含这个模块的头文件,就能正常调用 子文件中的功能函数了,这样才能减少功能文件的程序编写工作,不仅可以减少出错率,还能提供程序可读性。只需查看功能文件内包含的头文件,就能知道这程序有什么功能模块了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11826253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存