В C и C ++ допустимо разрывать строковый литерал, потому что препроцессор или компилятор объединяет смежные строковые литералы.
const char *zStr = "a" "b"; // valid
Что происходит, когда строковые литералы имеют префикс L
(широкие символы), u
(UTF-16), U
(UTF-32), u8
(UTF-8) и необработанные строковые литералы (R"foo(this is a "raw string literal" with double quotes)foo"
)?
Например, является лиразрешено следующее:
const wchar_t *zStr = L"a" "b"; // valid?