导航:首页 > 源码编译 > 多文件编译百度百科

多文件编译百度百科

发布时间:2023-02-27 07:40:19

㈠ 怎么编译多个c语言文件

1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。

㈡ gcc如何编译多文件

你这里有几处问题。

fun.h 加头文件卫士,头文件中声明全局变量要用static修饰。

#ifndefFUN_H
#defineFUN_H
staticintg=10;
voidfun();
#endif

其他文件中引用这个文件的变量,extern int g;

mian.c

#include<stdio.h>
#include"fun.h"
externintg;
voidmain()
{
printf("%d ",g++);
fun();
}

㈢ C语言多文件编程

多个c文件的作用在于将不同功能的代码分开来实现,这样便于代码重用、代码编译和代码管理。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。

多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。

如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。

函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。

㈣ 如何实现linux下的C++多文件编译

要分开编译,然后链接,比如
$ g++ print.cpp -c
$ g++ test.cpp -c
$ g++ test.o print.o -o mytest
这里的-c表示只编译。因为你有两个文件,所以编译两次。编译后会生成.o的文件。
然后把这些在链接起来就可以了。-o表示输出的文件。

㈤ 多文件使用linux进行编译

可以使用makefile进行make编译,建议先看一下简单的make fike编写规则。
一般情况下在MakeFile或*.mk下进行make就可以~~

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

第一个问题
请问,我是不是该这样做:
在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吗
可以不在创建而直接使用吗?
答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。

阅读全文

与多文件编译百度百科相关的资料

热点内容
linux中命令大全 浏览:36
pic单片机学习网站 浏览:163
843除6的算法 浏览:376
arduino编程视频 浏览:744
pdf背景绿色 浏览:612
记事本dos命令 浏览:274
服务器如何搭建多个节点 浏览:326
acx算法 浏览:258
幽冥诡匠漫画全集用什么app可以看 浏览:1001
租用服务器为什么越来越慢 浏览:960
算法创新就业方向 浏览:423
算法最优解作者 浏览:868
通达信红绿宝塔线指标源码 浏览:668
app是什么东西合法吗 浏览:232
怎么锁app视频教程 浏览:841
迅捷pdf注册码生成器 浏览:750
androidsdkosx 浏览:304
压缩面膜纸荧光 浏览:841
app怎么分身三个 浏览:746
电影bt下载源码 浏览:424