在便携式 ZIPPED 文件夹中包含一个 .h 文件

Including a .h file in a portable ZIPPED folder

我有一个问题。

我当前的项目有一个 header 我在开头包含。我这样包含它:

#include <C:/Data/Programming/Project_2018/Files/header.h>

事实证明这是个问题,因为我无法将它移植到另一台计算机上。我的问题是,我是否可以对 #include 进行某种更改以强制编译器在与使用它的 c 文件相同的文件夹中查找此 header.h?

#include <.../Files/header.h>

用...代表 main.c 文件所在的文件夹?

这个项目的最终目标是一个 zip 文件夹,它被交付以在任何计算机上使用,所以我需要这种可移植性...

有线索吗?

是的,您可以在 C 中使用相对包含。如果您从包含 main.c 的目录进行编译,#include "header.h" 将适用于您。请注意双引号,它告诉编译器查看源代码树,而不是包含路径。

如果你的目录结构是这样的:

.../files/
.../files/main.c
.../files/include/header.h

那么你会想要 #include "include/header.h"。你也可以向上移动树,所以

.../files/src/main.c
.../files/include/header.h

你可以#include "../include/header.h"。路径是 unix-y,在 unix land 中,.. 是父目录。

This question 也可能相关。