include的作⽤
#include发⽣在预处理阶段,整个编译链接过程,#include是最简单的了,没有之⼀。就是在include的位置直接把⽂件原原本本完完整整⼀字不落的包含进来,下⾯举⼀个极端点的例⼦:
//file a.c
#include <stdio.h>
include怎么用int d = 3;
#include "b"
//a.c end
//file b
main(){
printf("d = %d\n",d);
}
//b end
所以include后,源程序变为
//file a.c
#include <stdio.h>
int d = 3;
main(){
printf("d = %d\n",d);
}
2.关于c语⾔中#include 路径查问题
1. 包含命令中的⽂件名可以⽤双引号括起来,也可以⽤尖括号括起来。例如以下写法都是允许的:
#include"stdio.h"
#include<math.h>
但是这两种形式是有区别的:使⽤尖括号表⽰在包含⽂件⽬录中去查(包含⽬录是由⽤户在设置环境时设置的),⽽不在源⽂件⽬录去查;
使⽤双引号则表⽰⾸先在当前的源⽂件⽬录中查,若未到才到包含⽬录中去查。⽤户编程时可根据⾃⼰⽂件所在的⽬录来选择某⼀种命令形式。
2. ⼀个include命令只能指定⼀个被包含⽂件,若有多个⽂件要包含,则需⽤多个include命令。
3. ⽂件包含允许嵌套,即在⼀个被包含的⽂件中⼜可以包含另⼀个⽂件。
1.include<;头⽂件名>和include"头⽂件名"
如:include<stdio.h>和include"stdio.h"
前者(使⽤<>),来引⽤stdio.h⽂件,是⾸先检索标准路径,看看这些⽂件夹下是否有该头⽂件;如果没有,也不会检索当前⽂件所在路径,并将报错。
后者(使⽤""),来引⽤stdio.h⽂件,是⾸先检索⽂件的当前路径;如果没有,再检索标准路径,看看这些⽂件夹下是否有该头⽂件。
2.linux下,上述标准路径有:/usr/include,/usr/local/include。
3.<sys/头⽂件名>。如<sys/io.h>,<net/ethernet.h>等。其中,前⾯的字符串(如sys,net)表⽰标准路径下的⽂件夹名,后⾯的字符串(如io.h,ethernet.h),表⽰在linux标准路径下的各⽂件夹下的头⽂件名,如sys⽂件夹下的io.h⽂件,即我们可以在/usr/include/sys⽬录下发现io.h⽂件。
linux博⼤精深,需要慢慢积累。
4.如果想在指定路径下检索头⽂件,可加选项-I。如我的/home/Desktop⽬录下有个头⽂件local1.h,在编译包含local1.h的test.c⽂件时,可⽤:gcc test.c -o test -I /root/Desktop。