【今日/总数】文章:0/2773 用户:0/10774 书籍:0/200
回顾2016,喜迎2017,以“回顾我与C++技术网的2016,展望C++技术网的2017”为主题,发表文章,将有机会赢得2个月的会员或现金红包。

当前位置:操作系统 -> Linux -> Linux编程中gcc包含头文件的一些总结

原创版权标志Linux编程中gcc包含头文件的一些总结

作者:codexia  发表时间:2017/1/10 23:20:40  阅读:95
[摘要]VC编译器和GCC编译器有这样的细微的差别,需要注意。在GCC编译器规则中,<>只会搜索系统目录,在Linux中,GCC系统目录是/usr/include/,如果没有搜索到,那么就提示错误文件找不到。而““包含的头文件,如果没有在当前目录搜索到,那么就回到GCC系统目录/usr/include/去寻找,如果找不到,那么就会提示文件找不到错误。
文章来源:C++技术网 原创文章版权所有,未经授权,禁止转载。
    要包含其他头文件,我们要使用#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命令选项,然后紧接着指定头文件所在的目录,其他不变。这样就直接在指定的目录中去寻找需要的头文件。
文章来源:C++技术网 原创文章版权所有,未经授权,禁止转载。


当前位置:操作系统 -> Linux -> Linux编程中gcc包含头文件的一些总结

返回顶部

关于我们 QQ群 广告服务 增值服务 捐款资助 版权声明 RSS订阅 站点地图 百度网站地图 意见反馈
鄂ICP备14001349号-2, Copyright © 2014-2017, CJJJS.COM/CJJJS.CN, All Rights Reserved

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)