int main(int argc, char **argv) {
static_assert(false, R"error(This is an error message. You need to
1. Pick up the phone.
2. Call GhostBusters.
3. Run and hide.
)error");
}
给出
error: static_assert failed "This is an error message. You need to\n\n1. Pick up the phone.\n2. Call GhostBusters.\n3. Run and hide.\n\n"
static_assert(false, err);
^ ~~~~~
1 error generated.
有没有人知道这些是"未转义的原因"?它是编译器/平台依赖的吗?标准的一部分?
答案 0 :(得分:1)
GCC为您提供了所需的换行符:https://godbolt.org/g/jS7Sgm
确切的表示取决于编译器。是否打印转义代码可能最好被描述为"实施质量"问题。
答案 1 :(得分:1)
标准只是说:
生成的诊断消息(4.1)应包括字符串文字的文本(如果提供了该文本),但不包括不在基本源字符集(5.3)中的字符出现在诊断消息中。
换行符是基本源字符集的一部分,因此需要它们出现"出现"。完全他们出现的不是标准控制的问题。