⑴ C语言包含文件的格式
..(两个点)表示上一级目录
相应的
.(一个点)表示当前目录
⑵ C语言文件包含相关问题
两个 .c 文件没有包含关系的话,编译器当然是分别编译两个 .c 文件。这里把编译器生成的文件称为 .obj 文件,.obj 文件中不需要有所有用到的函数的定义
链接的时候需要告诉链接器两个 .obj 文件之间有引用关系,这样链接器就会把两个 .obj 文件组合起来,形成完整的程序,此时所有用到的函数都必须有定义,否则就会有链接期错误
至于要编译哪些文件,哪些文件需要链接在一起,必须告诉 编译器/链接器,可以是手动(通过命令行)告诉,也可以利用配置文件,或 IDE 自动生成……
⑶ C语言中文件包含功能怎么用
文件包含是指一个C语言源程序中将另一个C语言源程序包含进来,通过include预处理指令实现。
一般形式:
#include”被包含文件名”
或#include<被包含文件名>
2. 作用:将指定文件包含在当前文件中,插入至文件包含指令相应位置处。使用文件包 含指令,可以减少程序设计人员的重复劳动,提高程序开发效率。
3. 说明:
(1)被包含的文件一般指定为头文件(*.h),也可为C程序等文件。
(2)一个include指令只能指定一个被包含文件,如果要包含n个文件,则要用到n条include指令。
(3)不能包含OBJ文件。文件包含是在编译前进行处理,不是在连接时进行处理。
(4)当文件名用双引号括起来时,系统先在当前目录中寻找包含的文件,若找不到,再在系统指定的标准方式检索其它目录。而用尖括号时,系统直接按指定的标准方式检索。
一般系统提供的头文件,用尖括号。自定义的文件,用双引号。
(5)被包含文件与当前文件,在预编译后变成同一个文件,而非两个文件。
(6)文件包含可以嵌套,但必须按顺序包含。
⑷ C语言文件包含问题
不需要考虑库文件被重复包含的问题,这些标准文件内部都用宏和条件编译的方式做了防护,不会出现被重复包含的问题
反倒是你自定义的声明/宏会被重复包含
一般的做法是使用专门的宏作为标记,先判断该宏在之前是否已被定义,如该宏已被定义则通过条件编译忽略本头文件剩下的内容,这样就可以避免重复定义/声明的问题
形如:
#ifndef__MYSTRING_H__
#define__MYSTRING_H__
#defineTrue(1)
...
voidfunc1(int);
voidfunc2(int);
...
#endif
⑸ C语言文件包含相关问题
这个函数:int t()
在dfq.c中有定义,在mainc()中包含了dfq.c,#include预处理指令将其后指定的文件原地展开。此时相当于main.c中又定义了一次 int t(),C语言规定标识只能定义一次(但可以声明多次).
解决这个问题的方法有多种,通常的做法是:
建一个头文件:dfq.h,在其中声明函数int t();大致像这样
#ifndef DFQ_H
#define DFQ_H
int t();
#endif
然后在dfq.c中的开始处:
#include "dfq.h"
在main.c中的开始处:
#include "dfq.h"
简单解释一下dfq.h中的#ifndef预处理指令的意思:主要是为了防止多次重复的文件包含。当第1次包含时DFQ_H没有定义,此时包含文件内容,第2次以上包含时,因有了DFQ_H的定义,因此之后的内容将被忽略。
⑹ 什么是C语言文件包含处理
文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中。在源文件编译时,连同被包含进来的文件一同编译,生成目标,目标文件。