Sun Studio 12 Update 1:C++ 用户指南

A.2.39 -include filename

此选项使编译器处理 filename 的方式就相当于其是位于主源文件首行的 #include 预处理程序指令。例如以下源文件 t.c


main()
{
   ...
}

如果使用 cc -include t.h t.c 命令编译 t.c,如同源文件包含以下内容来编译:


#include "t.h"
main()
{
   ...
}

编译器搜索 filename 的第一个目录是当前的工作目录,不是包含主源文件的目录,这是显式包含文件时的情况。例如,以下目录结构包含两个具有相同名称但在不同位置的头文件:


foo/
   t.c
   t.h
   bar/
     u.c
     t.h

如果您的工作目录是 foo/bar 且使用 cc ../t.c -include t.h 命令进行编译,则编译器包括 foo/bar 中而不是 foo/ 中的 t.h,这是使用源文件 t.c 中的 #include 指令时的情况。

如果编译器在当前工作目录中找不到使用 -include 指定的文件,会在常规目录路径中搜索该文件。如果指定了多个 -include 选项,则按照文件在命令行中出现的顺序将其包含进来。