您的位置:

c语言两个源文件,C语言中的源文件

本文目录一览:

怎么连接两个C程序的源文件啊?

c和c++的多文件编程规则是有差别的。下面只描述c的(主要是语法要求不太一样,体现在编译层面)。

简单来说,有两个层面的问题:

1

编译问题

2

链接问题

1

编译问题:

就是你的代码要能够编译通过,编译主要是对语法的检查。例如:

1

a文件用b文件里的函数问题:在c语言中,a文件用b文件的函数,缺省不用做任何说明(缺省就是全局函数,注意不能是static函数,当然建议写上extern的引用说明)。

2

但是如果a文件要用b文件的结构体。那么必须把结构体放到头文件里,两个源文件都去include。

不罗列了,简单来说,代码要复合c的语法要求。

2

链接问题:

多个源文件可以编译成编译单元(编译做得事),并且把这些编译单元链接到一起形成最终的可执行文件或动态/静态库。

注:编译单元,.o文件。

举例:有a.c和b.c

以gcc编译来说:(不考虑其他编译和链接情况)

gcc

-c

a.c

//生成a.o

gcc

-c

b.c

//生成b.o

gcc

-o

hello

a.o

b.o

//

a.c和b.c里面一个必须有main函数。输出hello可执行程序。

如果是在集成开发环境,例如vc、devc++、codebloker等。就在软件相关工程属性里勾选上或增加源文件就行。(工具屏蔽了编译链接技术细节)

c语言 两个源文件的数组传递

array2的类型不对

这个需要定义成指针

unsigned char *array2;

这样就肯定可以了。

其实更简单的是

在Bfile.c里面直接

extern unsigned char array1[64];

然后使用array1就可以了

C语言,两个源程序,其中一个源程序文件调用另一个文件中的函数。

下面文件假设叫b.c,编写一个b.h,内容为:void enorder();

假设上面文件为a.c,前面加一句:#include "b.h"或不用b.h前面加句void enorder();也成

b.c中第1句改为:extern int a[10];

void enorder();在头文件b.h中写成extern void enorder();也成

C语言如何将两个源程序文件连接在一起编译

请使用预编译指令 #include。

#include放在代码文件头,用于告诉编译器,文件中包含的头文件,属于预处理文件的一部分 。

语法为:

#include iostream.h (这句是程序编译时搜索系统目录文件)

#include “HName.h" (这句是程序编译时搜索当前项目的文件)

C语言的开始:源文件,头文件

任何C程序最终都是要写在文件上面,通常分两种,源文件和头文件,不是每个程序都有头文件,比如一些简单小程序就没有。

源文件根据惯例,通常扩展名为.C,但是能否用其他扩展名吗?查了一些资料,得到的答案是:尽管标准并没有制定文件的取名规则,但大多数环境都存在你必须遵守的文件名命令约定。

头文件根据惯例,通常扩展名为.h。通常是一个源文件对应一个的头文件,并且两个文件名相同,只是扩展名不同。我一直有个疑惑,就是可以让源文件和头文件两个文件名不同吗?经过亲自折腾一下,确是可以的。经过细想,原因如下:头文件只是用于共享宏、变量、函数等的。而且#include的语义是把对应的文件包含进来,至于包含的文件是什么名字并不重要,要不要和源文件名相同也不重要,如果非要一样,反而限制了#include的能力。另外C99标准中有这样关#include有这样一句话:A #include directive shall identify a header or source file that can be processed by the implementation.也就是说指要编译器支持的文件,#include指令应该都可以包含。一般编译器的功能都挺强大,足够满足我们需求,至于遇到特殊情况的大佬,大佬也会自行解决。

聊到头文件 那就有必要对#include指令进行说明:

#include指令常用格式如下:

#include , #include "fileName" #include token(这里token一般指宏的名字)

如果在源文件#include包含有一个static变量或函数的定义的头文件,那么这个源文件也可以访问这个static变量或函数。原因就是这个源文件把对应的文件包含进来,那这些static变量或函数就相当于在这个源文件中定义,当然源文件就可以访问了。