C++如何实现多文件程序的编译和运行

C++如何实现多文件程序的编译和运行,第1张

vc++6.0实现圆宴州多文件程序

1、必须创建工程,并将文件加入同一工程下;2、必须有自定义头文件(.h)将多个源文橘蔽件(.c/.cpp)关联起来,并将函数定义放在头文件中。

多个源文件需要在这个祥慎窗口创建:

创建完毕后如图:

关于慎衫键 C 语言源程序的多模块编译、连接,这个必须要靠编写 makefile 文件才行。

而且还必须依照编写 makefile 的规则编写,才能够正确编译、连接各个宽巧 C 语言

源塌乎程序,最终执行 make makefile 指令,生成一个可执行程序。

makefile 文件是一个文本文件,其大致内容如下:

myfile1.o: myfile1.c

gcc -c myfile1.c

myfile2.o: myfile2.c

gcc -c myfile2.c

myrunfile: myfile1.o myfile2.o

gcc -o myrunfile myfile1.o myfile2.o

第一个问题

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

在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吗

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

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


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

原文地址: https://outofmemory.cn/yw/12329843.html

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

发表评论

登录后才能评论

评论列表(0条)

保存