oracle中include,2.16 如何指定 include 文件

2.16 如何指定 include 文件

要包含 C 编译系统提供的任何标准头文件,请使用以下格式:#include

尖括号 (<>) 导致预处理程序在系统上头文件的标准位置搜索头文件,此位置通常是 /usr/include 目录。

对于您已存储在您自己的目录中的头文件,格式不同:#include "header.h"

对于 #include "foo.h" 形式的语句(其中使用了引号),编译器按以下顺序搜索 include 文件:

当前目录(即放置“包含”文件的目录)

以 -I 选项命名的目录(如果有)

/usr/include 目录

如果头文件所在的目录与包含该头文件的源文件所在的目录不同,请指定使用 cc 及 -I 选项存储头文件时所用目录的路径。例如,假设在源文件 mycode.c 中已包含 stdio.h 和 header.h:#include

#include "header.h"

进一步假设 header.h 存储在目录 ../defs 中。命令:% cc– I../defs mycode.c

指示预处理程序首先在包含 mycode.c 的目录中搜索 header.h,然后在目录 ../defs 中搜索,最后在标准位置搜索。它还指示预处理程序首先在 ../defs 中搜索 stdio.h,然后在标准位置搜索。不同之处在于:仅对于其名称用引号括起的头文件,才查找当前目录。

您可以在 cc 命令行上多次指定 -I 选项。预处理程序按指定目录出现的顺序查找它们。您可以在同一命令行上对 cc 指定多个选项:% cc– o prog– I../defs mycode.c

2.16.1 使用 -I- 选项更改搜索算法

新的 -I- 选项提供对缺省搜索规则的更多控制。只有命令行上的第一个 -I- 选项的作用如本节所述。当命令行上出现 -I- 时:

对于 #include "foo.h" 形式的 include 文件,按以下顺序搜索目录:

1. 使用 -I 选项指定的目录(在 -I- 前后)。

2. 编译器提供的 C++ 头文件、ANSI C 头文件和专用文件的目录。

3. /usr/include 目录。

对于 #include 形式的 include 文件,按以下顺序搜索目录:

1. 使用 -I 选项指定的目录(在 -I- 后面)。

2. 编译器提供的 C++ 头文件、ANSI C 头文件和专用文件的目录。

3. /usr/include 目录。

下例显示在编译 prog.c 时使用 -I- 的结果。prog.c

#include "a.h"

#include

#include "c.h"

c.h

#ifndef _C_H_1

#define _C_H_1

int c1;

#endif

int/a.h

#ifndef _A_H

#define _A_H

#include "c.h"

int a;

#endif

int/b.h

#ifndef _B_H

#define _B_H

#include

int b;

#endif

int/c.h

#ifndef _C_H_2

#define _C_H_2

int c2;

#endif

以下命令显示了在当前目录(包含文件的目录)中搜索 #include "foo.h" 形式的包含语句的缺省行为。当处理 inc/a.h 中的 #include "c.h" 语句时,预处理程序包含 inc 子目录中的 c.h 头文件。当处理 prog.c

中的 #include "c.h" 语句时,预处理程序包含具有 prog.c 的目录中的 c.h 文件。请注意,-H 选项指示编译器输出所包含文件的路径。example% cc -c -Iinc -H prog.c

inc/a.h

inc/c.h

inc/b.h

inc/c.h

c.h

以下命令显示了 -I- 选项的效果。当预处理程序处理 #include "foo.h" 形式的语句时,它并不首先在包含目录中查找,而是按照通过 -I 选项指定的目录在命令行上的显示顺序搜索这些目录。处理 inc/a.h 中的 #include "c.h" 语句时,预处理程序包含

./c.h 头文件,而不是 inc/c.h 头文件。example% cc -c -I. -I- -Iinc -H prog.c

inc/a.h

./c.h

inc/b.h

inc/c.h

./c.h

2.16.1.1 警告

任何时候都不要将编译器安装区域 /usr/include、/lib 或 /usr/lib 指定为搜索目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值