㈠ C语言多文件编程
多个c文件的作用在于将不同功能的代码分开来实现,这样便于代码重用、代码编译和代码管理。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。
多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。
如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。
函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。
㈡ C语言怎么进行多文件编译,VC++6.0,要求详细步骤
将以上文件在一个工程中,就可以了,然后将函数定义,抽出来放在.h文件中,使用时,cpp\c文件,引入头文件即可,如:##include "XXXX.h"
㈢ 怎么编译多个c语言文件
1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。
㈣ linux下 c语言多文件编译
如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]
1. 多个文件一起编译
用法:#gcc testfun.c test.c -o test
作用:将testfun.c和test.c分别编译后链接成test可执行文件。
2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:
#gcc -c testfun.c //将testfun.c编译成testfun.o
#gcc -c test.c //将test.c编译成test.o
#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
㈤ c语言多文件编译改错
楼主..这个程序还是重写一下吧
数组是不能在程序里面指定大小的..必须在定义的时候就订好大小
还有你那个排序的问题太大了...
for(a=0;a<n;a++) //n个数比n-1次就行..剩下的那个肯定是最小的..还有你那个a已经是数组了..怎么还在这当整形用呢..太粗心了吧
for(b=0;b<n-a;b++)//n个数..要把最大的数沉底..比n-1 次就行...
{ if(a[c]>a[c+1])
{ temp=a[c];
a[c]=a[c+1];
a[c+1]=temp;
}
c++; //比完一趟之后应该把c置0
}
应该改成
for(i=0;i<n-1;a++)
for(b=0;b<n-i-1;b++)
{c = 0;
{ if(a[c]>a[c+1])
{ temp=a[c];
a[c]=a[c+1];
a[c+1]=temp;
}
c++;
}
}
楼主不要一次写那么多..错了也不好查..先分成几个写..
建议楼主 先自己写个排序的程序吧.. 然后再慢慢往上面加其他的吧...
㈥ c语言编写和编译多文件的程序
新建一个项目,然后添加文件,可以将不同的函数写在不同的文件中,要有一个头文件,包含需要调用的函数的声明,并且在其它文件中包含这个头文件。
编译调试方法和单文件程序无异。
㈦ C语言中,如何用多个文件编写程序
将一个函数写在一个文件里,然后再在另一个文件里用“include”包含这个文件。举个例子 在文件c1.c里编一个函数:
void printWord(){
printf("Hello!world!");
}
再建立一个文件c2.c,文件开头写上#include"c1.c",就可以调用c1.c里的函数printword()了
㈧ 关于C语言如何用多文件编一个程序
楼主是用TURBO C的吧? TC尽管比较原始简单,也有创建工程文件功能.
除了楼主去看TC菜单项..另有两种方法推荐..毕竟TC太老了.
1,学习使用其它C/C++开发环境.这很多,VC++,DEV-C++等等.
2,学习c命令行编译, 这是最本质最基础的使用C编译器的方法.
其实要编译多个文件,比如a.c b.c
使用TC,就是tcc a.c b.c回车
使用BORLAND C ,就是 bcc32 a.c b.c回车
使用GNU C, 就是 gcc a.c b.c 回车
使用VC++, 就是 cl a.c b.c 加车
...
㈨ 如何把一个复杂的C语言源代码分成几个文件,然后在dev c++上进行多文件编译
假设我们要更改的源代码如下:
即“No such file or directory”就是没有文件或者路径。说明你的路径写错了,在编程时务必要注意一下。
㈩ 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吗
可以不在创建而直接使用吗?
答案是需重新创建,不能直接使用。但你可以把一些在多个文件中使用的宏、全局变量等统一定义到一个头文件中,那这样就可以避免多次定义了。