-qinclude (-include)

适用的调用

表 1. 接受给定选项的调用
选项 xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
-qinclude
-include    
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

输入控件

等效编译指示

无。

用途

指定要包含在编译单元中的其他头文件,就像在源文件的 #include 语句中指定这些文件一样。

在源文件中由 #include 预处理器伪指令指定的所有代码语句和任何头之前插入这些头。 提供此选项是为了在受支持的平台之间实现可移植性。

语法

读取语法图跳过可视语法图 -include 文件
读取语法图跳过可视语法图 -q noinclude include=文件

缺省值

-qnoinclude

参数

文件
要包含在要编译的编译单元中的头文件的绝对或相对路径和名称。

基于 XL 的前端的用法

如果使用相对路径指定 file ,那么对它的搜索将遵循 包含文件的目录搜索序列中描述的序列。

-qinclude 选项的用法与 #include 伪指令的用法类似。 本部分描述了使用 -qinclude#include之间的差异。

-qinclude 选项仅适用于在其中指定了该选项的同一编译中指定的文件。 它不会传递到链接步骤期间发生的任何编译,也不会传递到任何隐式编译,例如由选项 -qtemplateregistry 调用到 -qtempinc生成的文件的编译。

在调用中多次指定该选项时,将按照命令行上的外观顺序包含头文件。 如果使用此选项多次指定同一头文件,那么会将该头视为由源文件中的 #include 伪指令多次包含,以在命令行上显示的顺序。

指定 -qnoinclude 将忽略 -qinclude的任何先前规范。 只有 -qinclude 的规范在-qnoinclude 之后才有效。

必须在源文件中的非注释语句之前出现的任何编译指示伪指令都将受到影响; 如果需要保留这些编译指示的位置,那么不能使用 -qinclude 来包含文件。

-qinclude 与其他选项配合使用时,以下规则适用:
  • 仅限 C + + 当与 一起使用时, 会与受其影响的源文件一起记录在模板注册文件中。 -qtemplateregistry -qinclude 当这些文件依赖关系启动模板注册表的重新编译时,仅当在将从属文件添加到模板注册表时为这些文件指定了 -qinclude 选项时,才会将其传递到这些文件。
  • 如果使用 -qsource生成列表文件,那么 -qinclude 包含的头文件不会显示在列表的源部分中。 如果希望这些头文件显示在列表中,请将 -qshowinc=usr-qshowinc=all-qsource 结合使用。
  • 在搜索从中调用编译器的目录之后, -qinclude 将搜索通过 -I 选项添加到搜索链的其他搜索路径。 可以在 -qinclude 选项之前或之后指定 -I 选项。
  • 使用 -qinclude 指定的文件作为依赖关系包含在 -qmakedep 输出中。 但是, -qinclude 选项和 #include 伪指令的依赖关系文件中的路径不同,因为使用 -qinclude 选项指定的文件会首先在调用路径中搜索,而 #include 伪指令包含的文件不会。

    由于使用 -qinclude 选项首次构建而创建依赖关系文件时,如果在两个构建之间涉及 -qinclude 选项上的头文件,那么不使用 -qinclude 选项的后续构建将触发重新编译。

  • -qlistopt 选项生成的编译器列表文件中, -qinclude 选项的每次使用都在 OPTION SECTION中有一个单独的条目。
  • 如果同时使用 -qsource 选项和 -qinclude 选项,那么使用 -qinclude 指定的头文件不会作为 #include 伪指令包含在程序源列表中。 但是,将包括在源程序中的 #include 伪指令上指定的文件。

用于基于 Clang 的前端

首先,在预处理器的工作目录中搜索 file 。 其次,如果在预处理器的工作目录中找不到 file ,那么将在 #include 伪指令的搜索链中搜索该文件。 如果指定了多个 -include (-qinclude) 选项,那么将按命令行上的外观顺序包含这些文件。

预定义的宏

无。

示例

要在源文件 test.c中包含文件 test1.htest2.h ,请输入以下命令:
xlc -qinclude=test1.h test.c  -qinclude=test2.h