Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 宏,具体取决于其文件夹位置_C++_C_C++11_Macros_C Preprocessor - Fatal编程技术网

C++ 宏,具体取决于其文件夹位置

C++ 宏,具体取决于其文件夹位置,c++,c,c++11,macros,c-preprocessor,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

在以下文件中:

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目录中具有
(空)
的含义,而在app目录中具有
“./LIB/”
的含义

这样我就不用担心将
file.hpp
从应用程序移动到lib了。我只需要帮打电话的人解决一下。但不是它所说的


类似于web编程框架的概念。在C/C++中有可能吗?

根据您所写的内容,您正在寻找一种方法来移动源代码,而不必担心指向标题的硬编码路径

<>你没有指定你使用的编译器,所以我不关注特定的编译器,无论如何,大多数C++编译器都有一个选项(在GCC上你只会使用一些类似于<代码> ILBB-PARTENTURDI/<代码>)。 将库的父路径包含到搜索列表中后,可以四处移动源(只要不移动库的标题),并让它们包含正确的标题,例如
#include
(和)


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

您不能将宏用作路径的一部分,但可以制作一个扩展为完整字符串的宏。。/lib/crypt.hpp“。如果我理解正确,这听起来很复杂,也不必要,我只需要将lib的父路径包含到include目录,然后使用
#include
@JoachimPileborg,任何方式都可以。我正在寻找一个类似于马可最后一行的概念。我的程序很容易有很多更改和修复代码,因为一开始移动文件很好,但过了一段时间就会变得很无聊。我的代码和你一开始说的一样。但问题是,我希望每个文件都能正常工作,而不包含额外的内容。标准解决方案是使用
#include“crypt.hpp”
并使用选项
-i../lib
进行编译,或者使用
#include“lib/crypt.hpp”
并使用
-i../code>进行编译。