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

 我来答
范望亭虎倩
2020-03-17 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:33%
帮助的人:618万
展开全部
第一个问题
请问,我是不是该这样做:
在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吗
可以不在创建而直接使用吗?
答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。
呆萌小怪兽yy
2020-02-13 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:977万
展开全部
应该用vc之类的IDE建立工程,然后将所有文件添加进工程里,这样就可以写成include
.h了。
具体原理我不清楚,我估计是IDE在编译时自动将.c的文件编译成库(library),再由.h头文件来“索引”这些函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式