关于C语言的一个问题,高手请进
比如说我有三个c文件,两个个h文件,main.c,a.c,a,h,b.c,b.h。a.c中有一个函数a();,为了给别的文件调用,在a.h中添加了externvoida(...
比如说我有三个c文件,两个个h文件,main.c,a.c,a,h,b.c,b.h。
a.c中有一个函数a();,为了给别的文件调用,在a.h中添加了extern void a();
b.c中有一个函数b();,为了给别的文件调用,在b.h中添加了extern void b();
现在是a();中调用b();所以在a.c 开头#include b.h;
main.c中main()想调用a();,在main.c开头#include a.h,还要#include b.h吗?
哥们,请确定自己是对的再回答好吗?四个答案2个说要2个说不要,好迷茫啊! 展开
a.c中有一个函数a();,为了给别的文件调用,在a.h中添加了extern void a();
b.c中有一个函数b();,为了给别的文件调用,在b.h中添加了extern void b();
现在是a();中调用b();所以在a.c 开头#include b.h;
main.c中main()想调用a();,在main.c开头#include a.h,还要#include b.h吗?
哥们,请确定自己是对的再回答好吗?四个答案2个说要2个说不要,好迷茫啊! 展开
展开全部
好吧,我来回答吧,其实是不需要的,我还特意测试了一下,编译成功而且调用过程都没有问题
解释一下,a.c文件中调用了b()函数,a.c包含了b.h头文件,所以a.c文件能正常调用b()函数,这点大家应该都没有问题,但main()中通过调用a()来间接调用b()函数需不需要b()的头文件呢,答案是不需要的,从编译过程中,我们知道,编译器把a.c、b.c和main.c分别编译成a.o、b.o和main.o的目标文件,然后分别将a.o和b.o和main.o链接成可执行程序。通过回顾编译过程,就非常好理解了,main.c中调用了a(),所以只要#include “a.h”告诉编译器a()函数是在别处定义的(这里是在a.c中定义)即可,至于在a()函数中调用了b()函数,只要在a()函数定义处添加#include "b.h"即可,与main.c文件是没有关系的。
用事实说话!
展开全部
如果b()没有在main.c中被直接调用,就不必包含b.h
不用迷茫,100%肯定不需要
不用迷茫,100%肯定不需要
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不好意思,看错了,以为你问的是关联包含。如果你a.h 包含 b.h,c.h 包含 a.h,那么c.h肯定是包含b.h中的函数的。但你用的都是*.c文件中包含其他的头文件,这个应该还是要加一句#include "b.h",头文件和源文件不建议你掺合写,如果你要想省事,你就在a.h中包含b.h,不要到a.c中去包含
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要。
但如果你在a.h中写了#include "b.h",就不用了。
但如果你在a.h中写了#include "b.h",就不用了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要,c语言函数都是全局函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要,因为你a.h中没有#include "b.h" 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询