c语言中多个文件的编译问题

c语言中多个文件的编译问题,第1张

第一个问题

请问,我是不是该这样做:

在main.c中#include

在fun.c中同样#include

(好像是必需的,请详细解释)

这是必需的。因为编译器只是把包含文件的代码复制过来,既然你二个文件中都用到头文件的内容,那当然要包含头文件,否则就会出错。

我的观点,如果这两步都是必需的

那么当有很多个比如10个.c程序每个里头都要#include

那么文件是不是会特别大,当有100个.c程序都要包含一下的话,那么不是非常重复么?)

那当然是会重复的。不过这个对程序的运行效率没任何影响,只是在编译过程中对文件的分析时间会稍长些,这也是没有办法的事,全看代码编写者如何组织结构了。

第二个问题:

会的。解决的方法就是在可能被多次包含的头文件中开头加上#pragma

once,那样就可以保证此头文件代码只被执行一次,而不会造成头文件中函数多次重复定义至于引起这种情况的情况。当然你也可以自己用#ifdef等预编译处理来解决。你问的问题不就是这种情况么?main.c和fun.c中都包含头文件tou.h

第三个问题:

当我在main.c中这样

#define

unchar

unsigned

char

那么当我在fun.c中还需要重新创建替换宏unchar吗

可以不在创建而直接使用吗?

答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。

点击全局编译按钮

,完成后在相应目录文件夹(之前存放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,


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存