• 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指定的搜索目录。

  • 相关阅读:
    DataTable常用操作总结[转帖]
    Jquery实现淡入淡出效果
    在自定义Server Control中捆绑JS文件 [转帖]
    ASP.NET利用String.Join以分隔符號來串連集合資料 [转帖]
    fork()的一些测试
    大端小端表示法 && GAS对过程的实现
    GAS中流程控制的实现,for, while, if, switch
    一个看起来奇怪的C++程序 && c++操作符重载
    修改函数的返回地址
    stl algorithm sort ,unique
  • 原文地址:https://www.cnblogs.com/pied/p/5953333.html
Copyright © 2020-2023  润新知