MACRO 取决于其文件夹位置

MACRO depending on its folder location

在以下文件中:

app/main.cpp
app/config.hpp
app/show.hpp
app/file.hpp

lib/append.hpp
lib/clear.hpp
lib/reopen.hpp
lib/crypt.hpp

我有问题。想象一下我的一些文件使用 lib/crypt.hpp。例如在 app/file.hpp 我应该写:

#include "../lib/crypt.hpp"

如果我将此文件放入 lib 文件夹,它将不再起作用。所以我需要一个类似的东西:

#include "LIB/crypt.hpp"

所以,这个LIB/在lib目录下的意思是(empty),而在app目录下的意思是"../lib/"

那我就不用担心 file.hpp 从 app 移动到 lib 了。我只需要修复它的调用者。但不是它所说的。

类似于网络编程框架的概念。在 C/C++ 中可以吗?

根据您所写的内容,您正在寻找一种方法来移动您的资源而不用担心 hard-coded 路径到您的 headers。

你没有指定你正在使用的编译器,所以我不关注特定的编译器,无论如何大多数 C++ 编译器都有一个选项 to specify one or more header search paths(在 gcc 上你只需使用类似 -Ilib_parent_dir).

一旦您将库的 parent 路径包含到搜索列表中,您就可以移动源(只要不移动库的 headers)并让它们包含对 headers 加上 #include <lib/crypt.hpp>(和 keep include paths priority in mind

与使用宏相比,这应该是一种更清晰、更简单的方法来实现您的要求。