MACRO取决于其文件夹位置

时间:2015-03-31 08:31:02

标签: c++ c c++11 macros c-preprocessor

在以下文件中:

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 ++中有可能吗?

1 个答案:

答案 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

之类的正确标题

这应该是一种更简洁,更简单的方式来实现您的要求,而不是使用宏。