【发布时间】:2017-08-16 07:09:52
【问题描述】:
我有一个定义,其中包括一个路径(没有转义序列),如下所示:
// Incorrect
#define PATH "c:\blah\blah\file.cfg"
我宁愿这样:
// Corrected
#define PATH "c:\\blah\\blah\\file.cfg"
虽然很遗憾我不能修改宏定义(实际上是生成包含宏的源的脚本......),除了添加前缀。现在我需要打开这个路径中给出的文件。我尝试了这样的 c++11 原始字符串文字:
// Modified definition
#define PATH R"c:\blah\blah\file.cfg"
std::ifstream(PATH); // error: unrecognised escape sequence
现在的问题是如何使用宏替换所有\?
注意事项(如果重要):
编译器:MSVC 14.0
操作系统:Windows 7
【问题讨论】:
-
\blah 实际上是 \b 后跟 lah。这是完全不同的性格。没有办法从那里去 \\
-
如果您对构建系统有任何控制权,那么在运行编译器之前对代码生成脚本的输出进行后处理可能会更容易。
-
修正脚本将是最好的解决方案,如果这真的不可能,后处理是下一个最好的解决方案恕我直言