zoukankan      html  css  js  c++  java
  • gcc 编译时 include 搜索路径

    这是一个不复杂的问题;但是网上很多回答都不全面;偶找了一个比较全面的(测试过):

    #include有两种形式,例如如下:

    #include <syshead.h>
    #include "userhead.h"
    用尖括号表示的是包含系统的头文件,用双引号包含的是用户自己的头文件。

    下面是使用#include时的一些规则:

    1)使用<>包含的头文件一般会先搜索-I选项后的路径(即用gcc编译时的-I选项),之后就是标准的系统头文件路径。

    2)而用""号包含的头文件会首先搜索当前的工作目录,之后的搜索路径才是和<>号包含的头文件所搜索的路径一样的路径。

    3)在unix系统中,一般标准的头文件路径为:

    /usr/local/include
    /usr/lib/gcc-lib/target/version/include
    /usr/target/include
    /usr/include
    4)一般有两条独立的头文件搜索路径链。一条是-I后面指示的路径,另一条是系统头文件路径和以-prefix, -withprefix,和-idirafter后操作的目录。

    5)如果gcc编译的是c++的程序,那么在搜索上面所说的目录前,预处理器会首先搜索/usr/include/g++v3目录,v3是你的gcc中c++的版本。

    6)在头文件中运行增加路径名,例如:#include <sys/time.h>,那么就会在搜索的系统目录的sys目录下寻找time.h文件。

    7)一般会用斜线来作为目录的分割符,甚至有些系统使用不同的字符作为分割符(例如反斜线)。

    8)#include后面所包含的文件名就是文件名,例如abc*d.h这个文件,必须就要有abc*d.h这个文件,而不是abckkkd.h这些文件,*不能解释成任  

        何的字符的意思,而是实实在在的一个字符。

    9)可以使用一个指定的名字作为#include指令后面的头文件,例如:

    #define BOGHEADER "bog_3.h"
    #include BOGHEADER
    10)在#include 指令的后面,除了所包含的头文件和注释外,不能包含其它的任何东西了。

    11)#line指令不能改变当前的工作目录。

    12)-I-选项可以改变-I指定的搜索目录。

  • 相关阅读:
    VirtualBox不显示64bit版本的iso
    学习和参考资料
    神经网络和机器学习资料整理
    动态空间释放时的错误操作引起的运行时错误
    WIN7 X64的运行命令窗口
    vs2010中的ADO控件及绑定控件
    AdventureWorks2012.mdf的使用
    VS2008/2010 都不能使用Access2010数据库
    WIN7 64位操作系统 无法找到Access驱动
    如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单
  • 原文地址:https://www.cnblogs.com/pied/p/5953333.html
Copyright © 2011-2022 走看看