2

我正在尝试使用#define定义字符串文字(在这种情况下为文件路径),但我无法从另一个#define'd 元素获取路径。简而言之,我想要这样的东西:

#define X /var/stuff
#define Y "X/stuff.txt"

给我Y作为"/var/stuff/stuff.txt"。这甚至可能吗?预先感谢。

编辑:或者,这样的东西会将两个文字合二为一吗?

#define X "/var/stuff"
#define Y X"/stuff.txt"
4

1 回答 1

3

不是你拥有它的方式,不——宏替换不会发生在字符串文字中。

但是,您可以将片段中的字符串粘贴在一起:

#define str(x) #x
#define expand(x) str(x)

#define X /var/stuff
#define Y expand(X) "/stuff.txt"

快速演示代码:

#include <iostream>

int main(){
    std::cout << Y;
}
于 2013-02-06T03:35:03.803 回答