在C++中将DEFINE与Literal Strings混合使用

Ric*_*ler 1 c++

我创建了一个指向特定目录的#define.然后,我想将此定义与字符串文字结合使用:

#define PATH_RESOURCES "/path/to/resources/"
std::ifstream datafile(PATH_RESOURCES + "textures.dat");
Run Code Online (Sandbox Code Playgroud)

但是,编译器抱怨使用+运算符添加char类型:

error: invalid operands of types ‘const char [11]’ and ‘const char [13]’ to binary ‘operator+’


那么如何将#define与字符串文字结合起来呢?或者,是否有更好的方法完成此操作?我想使用一个const变量将是一个替代方案,但这意味着必须传递另一个参数,我宁愿将其保留为全局定义.

das*_*ght 5

您可以通过一个接一个地编写它们来组合两个字符串文字,它们+之间没有加号:

std::ifstream datafile(PATH_RESOURCES "textures.dat");
Run Code Online (Sandbox Code Playgroud)

其中一个字符串文字恰好通过预处理器定义的事实并没有太大变化:你也可以这样做:

std::ifstream datafile(PATH_"/path/to/resources/" "textures.dat");
Run Code Online (Sandbox Code Playgroud)

这是关于ideone演示.