c++ - 包含路径的字符串连接

标签 c++ c include c-preprocessor

有没有办法将 2 个字符串文字连接起来形成一个包含路径?

代码 stub :

#define INCLUDE_DIR "/include"
#include INCLUDE_DIR "/dummy.h"

this question ,答案指向不同的方向(编译器命令行)。提到here这似乎是不可能的,但我想知道这个话题是否已经足够挖掘了。

(我确实有一个与之相关的用例,请将您的答案/评论集中在这个问题上。)

最佳答案

我不确定这是否正是您想要的,但无论如何。

#define DECORATE(x)             <x>
#define MAKE_PATH(root, file)   DECORATE(root file)

#define SYS_DIR(file)           MAKE_PATH(sys/, file)
#define ARPA_DIR(file)          MAKE_PATH(arpa/, file)


#include SYS_DIR(types.h)
#include SYS_DIR(socket.h)
#include ARPA_DIR(inet.h)

注意,生成的文件名包含额外的空格 - <sys/ types.h> ,所以它可能不是一个交叉编译器解决方案。但至少对我来说,它适用于 GCC 4.8/4.9 上的 Linux 主机。

附:如果有人可以用另一个编译器检查这个片段会很好,例如MSVC。

关于c++ - 包含路径的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39038867/

相关文章:

c - Eclipse 在插入符号之前而不是之后匹配括号

c - 将数组传递给函数以进行内存分配

c - #include 不会加载 C 中的 header

c - 关于C编译过程和库的链接

c - glib 哈希容器中的 flex+bison 输出

c++ - 引用类型的C++内存管理

c++ - 接受左值和右值参数的函数

c++ - 错误 : postfix ‘unaryOperators unaryOperators::operator++(const unaryOperators&)’ must take ‘int’ as its argument

arrays - Ruby - 计算数组中包含两个字符之一的字符串数

C++ STL vector : Get iterator from index?