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)
与使用宏相比,这应该是一种更清晰、更简单的方法来实现您的要求。
在以下文件中:
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)
与使用宏相比,这应该是一种更清晰、更简单的方法来实现您的要求。