我正在尝试使用#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"
答案 0 :(得分: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;
}