我有一个头文件sample_A.h
,它有一个#include "sample_B.h"
格式的include语句。我还有另一个头文件sample_C.h
。我希望头文件sample_A.h
包含sample_C.h
而不是sample_B.h
,但在任何情况下我都不能编辑用于构建项目的Makefile之外的任何内容。通过单独编辑Makefile,将sample_A.h
“重定向”为sample_C.h
而不是sample_B.h
的最佳方法是什么?假设sample_C.h
和sample_B.h
都允许sample_A.h
编译。
答案 0 :(得分:0)
我希望标题文件
sample_A.h
包含sample_C.h
而不是sample_B.h
,但在任何情况下都不能编辑用于构建项目的Makefile之外的任何内容。
原则上,编译器很乐意选择如何解释#include
指令( ie "sample_B.h"
)中提供的文件标识符,但实际上,每个编译器都是如此您可能会遇到将其解释为文件名或路径。因此,如果您有一个(唯一)简单名称为sample_C.h
的文件,并且您没有允许为其提供其他名称的方法(例如,通过复制或创建符号链接),则不太可能有任何方式可以选择该文件来满足#include "sample_B.h"
指令。
但是,如果两个标题具有相同的简单名称但位于不同的目录中,例如src/sample_B.h
和custom/sample_B.h
,通常可能影响通过影响包含文件搜索路径的编译器选项选择哪个。 Unix C编译器的传统选项是-I
。