在以下文件中:
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了。我只需要修复它的调用者。但不是它所谓的。
类似于Web编程框架的概念。在C / C ++中有可能吗?
答案 0 :(得分:1)
根据您所写的内容,您正在寻找一种方法来移动您的来源,而不必担心标题的硬编码路径。
你没有指定你正在使用的编译器所以我没有专注于特定的编译器,无论如何大多数C ++编译器都有一个选项to specify one or more header search paths(在gcc上你只会使用类似于-Ilib_parent_dir
)。
一旦您将lib的父路径包含在搜索列表中,您就可以移动您的来源(只要您不移动lib的标头)并拥有它们包含#include <lib/crypt.hpp>
(和keep include paths priority in mind)
这应该是一种更简洁,更简单的方式来实现您的要求,而不是使用宏。