我发现了关于C语言预处理器如何处理字符串字面值连接(阶段6)的这个。然而,我找不到任何关于C++如何处理此问题的信息(C++是否使用C预处理器?)。
我提出这个问题的原因是我有以下代码:
由于
我无法访问多个平台,我很好奇上述问题是否总是被正确处理 - 也就是说,我总是会得到
我提出这个问题的原因是我有以下代码:
const char * Foo::encoding = "\0" "1234567890\0abcdefg";
其中encoding
是类Foo
的静态成员。如果没有拼接,我将无法以那种方式编写该字符序列。
const char * Foo::encoding = "\01234567890\0abcdefg";
由于
\012
的解释方式不同,所以这是完全不同的东西。我无法访问多个平台,我很好奇上述问题是否总是被正确处理 - 也就是说,我总是会得到
{0,'1','2','3',...}
。
std::string
来表示不可变的字符串常量呢?甚至没有考虑到客户端代码规范可能需要char *
(例如某些API)。 - AnT stands with Russia"\000123..."
。一个数字转义序列最多只能有三个八进制数字,第四个数字不包括在转义序列中,它是一个普通字符。 - Rob Kennedy