我有这样一个定义,包括路径(没有转义序列):在预处理定义字符替换
// 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
\等等实际上是\ B,接着啦。这完全是一个不同的性格。没有办法从\\ –
如果您完全可以控制您的构建系统,那么在运行编译器之前对代码生成脚本的输出进行后处理可能会更容易。 –
更正脚本将是最好的解决方案,如果这是不可能的,后处理是下一个最好的解决方案恕我直言 –