#include_next 伪指令(IBM 扩展)

预处理器伪指令 #include_next 的行为与 #include 伪指令相似,只是它专门从要搜索指定文件的路径中排除了包含文件的目录。 将从要搜索包含文件的路径列表中省略包含文件目录的所有搜索路径。 这允许您在应用程序的不同部分中包含具有相同名称的文件的多个版本; 或者在另一个具有相同名称的头文件中包含一个头文件 (没有以递归方式包含自身的头)。 如果不同的文件版本存储在不同的目录中,那么伪指令将确保您可以访问该文件的每个版本,而不要求您使用绝对路径来指定文件名。

#include_next 伪指令语法

读取语法图跳过可视语法图#include_next "file_pathfile_name"<file_pathfile_name>
该伪指令只能在头文件中使用,并且由 file_name 指定的文件必须是头文件。 使用双引号和尖括号将文件名括起来是没有区别的。
作为使用 #include_next 伪指令解析搜索路径的示例,假定有两个版本的文件 t.h: 第一个版本 (包含在源文件 t.c中) 位于子目录 path1中; 第二个版本 (包含在第一个版本中) 位于子目录 path2中。 编译 t.c 时,这两个目录都指定为包含文件搜索路径。
/* t.c  */

#include "t.h"

int main()
{
printf(", ret_val);
}

/* t.h in path1 */

#include_next "t.h"

int ret_val = RET;

/* t.h in path2 */

#define RET 55;

#include_next 伪指令指示预处理器跳过 path1 目录,并从 path2 目录开始搜索包含的文件。 此伪指令允许您使用两个不同版本的 t.h ,并且可防止以递归方式包含 t.h