nclude “” 与 include <>

1.
< >引用的是编译器的类库路径里面的头文件
" "引用的是你程序目录的相对路径中的头文件

假如你编译器定义的自带头文件引用在C:\Keil\c51\INC\下面
则#include<stdio.h>引用的就是C:\Keil\c51\INC\stdio.h这个头文件
不管你的项目在什么目录里,C:\Keil\c51\INC\stdio.h这个路径就定下来了
一般是引用自带的一些头文件:stdio.h、conio.h、string.h、stdlib.h等等之类的。。

假如你的项目目录是在D:\Projects\tmp\
则#include "my.h" 引用的就是D:\Projects\tmp\my.h这个头文件
一般是用来引用自己写的一些头文件
如果使用" ",它是会先在你项目的当前目录查找是否有对应头文件
如果没有,它还是会在对应的引用目录里面查找对应的头文件
意思就是,使用#include "stdio.h"如果你项目目录里面,没有stdio.h这个头文件,它还是会定位到C:\Keil\c51\INC\stdio.h这个头文件的
2.

#include <stdio.h> 只搜索系统类库,不搜索本地。Linux下类库目录是 /usr/include/

对于linux gcc 编译器,他会再从其他路径里找,见: 3

#inlcude "stdio.h" 先搜索本地,如果本地存在就不再搜索,本地不存在就搜索系统类库。

3.

刚刚翻了翻gcc查找include的头文件的优先级,首先会在当前目录下找,假如没有找到,会在以下几个地方找: 1.编译的时候指定 2.gcc的specs里 3.使用-I参数指定的路径 4.gcc环境变量设置(C_INCLUDE_PATH) 而在这四个当中,-I参数指定的路径优先级最高。在gcc的手册里是这么说的:        -I dir            Add the directory dir to the list of directories to be searched for header files.  Directories named            by -I are searched before the standard system include directories.  If the directory dir is a stan-            dard system include directory, the option is ignored to ensure that the default search order for sys-            tem directories and the special treatment of system headers are not defeated . 使用-I参数指定的路径会在标准的系统include路径之前被搜索。 简单写一行shell,就能看到include的搜索的顺序了。 echo 'main(){}' | gcc -E -v  - #include "..." 搜索从这里开始: #include <...> 搜索从这里开始: /usr/local/include /usr/lib/gcc/i386-redhat-linux/4.1.2/include /usr/include 加上-I参数  echo 'main(){}' | gcc -E -v  -I /home/chengcheng/mmsapp/include -,结果则是 /home/chengcheng/mmsapp/include /usr/local/include /usr/lib/gcc/i386-redhat-linux/4.1.2/include /usr/include


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值