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

  • 相关阅读:
    返回一个整数数组中最大子数组的和(数组头尾连接)
    场景调研(补)
    《浪潮之巅》读书笔记3
    《软件工程》课程改进意见
    【每日scrum】第一次冲刺day6
    【每日scrum】第一次冲刺day5
    【每日scrum】第一次冲刺day4
    【每日scrum】第一次冲刺day3
    【每日scrum】第一次冲刺day2
    【每日scrum】第一次冲刺day1
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/2576068.html
Copyright © 2020-2023  润新知