【发布时间】:2015-03-31 08:31:02
【问题描述】:
在以下文件中:
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++ 中可以吗?
【问题讨论】:
-
不能使用宏作为路径的一部分,但是可以制作一个扩展为完整字符串
"../lib/crypt.hpp"的宏。 -
这听起来很复杂而且没有必要,如果我理解正确的话,我只会将 lib 的父路径包含到包含目录中,然后使用
#include <lib/whatever> -
@JoachimPileborg 任何方式都可以。我正在寻找与this code 的最后一行类似的概念。
-
@MarcoA。我的程序很容易发生很多变化,并且由于首先移动文件而修复代码很好,但过了一段时间就变得无聊了。我的代码就像你一开始说的一样。但问题是我希望每个文件都能正常工作,而不包括额外的东西。
-
标准解决方案是使用
#include "crypt.hpp"并使用选项-I../lib进行编译,或者使用#include "lib/crypt.hpp"并使用-I..进行编译。
标签: c++ c c++11 macros c-preprocessor