包含路径的字符串连接

Ant*_*nio 12 c c++ include c-preprocessor

有没有办法连接2个字符串文字以形成包含路径?

代码存根:

#define INCLUDE_DIR "/include"
#include INCLUDE_DIR "/dummy.h"
Run Code Online (Sandbox Code Playgroud)

看看这个问题,答案指向不同的方向(编译器命令行).它提到这里,这似乎是不可能的,但我不知道是否该主题已经挖够了.

(我确实有一个与此相关的用例,请仅关注此问题的答案/评论.)

Ant*_*nio 1

看来这确实是不可能的。我将在这里报告Eric Postpischil 的回答中的相关部分(他似乎不再活跃了)。

编译器将在一行上进行宏替换#include(根据 C 2011 [N1570] 6.10.2 4),但语义未完全定义,并且在没有 C 实现的额外帮助的情况下不能用于连接文件路径组件。因此,您要做的就是进行一些简单的替换,提供完整的路径,例如:

#define MyPath "../../path/to/my/file.h"
#include MyPath
Run Code Online (Sandbox Code Playgroud)

文档链接。特别是本节对便携式解决方案没有留下太多希望:

<将和预处理标记对>或一对"字符之间的预处理标记序列组合成单个标头名称预处理标记的方法是实现定义的。


为了完整起见,也许可以使用/sf/answers/1948119001/进行尝试。当我有空的时候我会调查一下......