当前位置:C++技术网 > 资讯 > Linux编程:3 gcc包含头文件的一些总结

Linux编程:3 gcc包含头文件的一些总结

更新时间:2017-01-10 23:20:40浏览次数:1+次

    要包含其他头文件,我们要使用#include指令。我们知道,包含头文件有两种写法,分别是:
#include <stdio.h>
#include "stdio.h"
    <>和""分别表示搜索位置的方式。VC中,<>表示先从系统目录下搜索,如果没有搜索到,再从当前目录搜索。""表示先从当前目录搜索,如果没有搜索到,再到系统目录搜索。两者都没有搜索到,回到VS指定的头文件包含目录搜索。
    然而这个规则在Linux中的GCC编译器里是不太一样的。这个我们需要区分一下。
    在GCC编译器规则中,<>只会搜索系统目录,在Linux中,GCC系统目录是/usr/local/include/和/usr/include/,如果没有搜索到,那么就提示错误文件找不到。而""包含的头文件,如果没有在当前目录搜索到,那么就回到GCC系统目录/usr/local/include/和/usr/include/去寻找,如果找不到,那么就会提示文件找不到错误。如果编译指令指定了搜索头文件的路径,gcc还会到这个指定的目录中寻找,如果没有找到,才会提示文件找不到的错误。这是我实际测试的结果,测试方法就是:将自定义的头文件放在/usr/include/和指定的目录中,然后在代码中用""包含头文件,当然在当前目录下不提供。而头文件定义了一个函数名和函数定义,两个头文件的函数输出内容不一样,然后看看执行函数输出的内容是什么,就可以判断包含的是哪个头文件。
    VC编译器和GCC编译器有这样的细微的差别,需要注意。在VS中,我们可以这样设置头文件包含(搜索)目录:
Linux编程中gcc包含头文件的一些总结
    那么GCC如何指定搜索头文件的目录呢?
    我们用GCC编译程序的时候,使用如下命令编译:
gcc hello.c
    如果hello.c包含了一个目录下的头文件,我们可以在编译时,给gcc命令指定-I命令选项,然后紧接着指定头文件所在的目录,其他不变。这样就直接在指定的目录中去寻找需要的头文件。