Когда сплайсинг линии CPP отменен в необработанных строках C ++ 0x, необходима ли соответствующая реализация для сохранения исходной последовательности Newline?

StackOverflow https://stackoverflow.com/questions/4540499

Вопрос

Последний проект C ++ 0x, N3126, говорит:

Каждый экземпляр символа BackSlash (), сразу же с последующим символом новой линии, удаляется, сращивание физических исходных линий для формирования логических исходных линий.

...

Внутри R-char-последовательность Из грубого литерала любые преобразования, выполняемые на фазах 1 и 2 (триграфы, универсальные имена ичинки и сплайсинг линии).

Технически это означает, что препроцессор C ++ только распознает только обратную черту, за которой следуют символ Newline, но я знаю, что некоторые реализации C ++ также также позволяют также также разрешать концовки в стиле Mac.

Будет соответствовать реализациям C ++ 0x, чтобы сохранить последовательность Newline, которая сразу же последовала за символом BackSlash \ В рамках R-char-последовательности необработанной струны? Может быть, лучший вопрос: будет ли это ожидать от компилятора Windows C ++ 0x, чтобы отменить каждую линию сращивания с "\\\r\n" вместо "\\\n"?

Это было полезно?

Решение

Фаза 1 перевода начинается с

Символы физического исходного файла отображаются, определяемым реализацией, с основным набором символов источника (введение символов Newline для индикаторов конца линии), если это необходимо. Последовательности триграфа (2.3) заменяются [...

Я бы интерпретировал требование «любые преобразования, выполняемые на фазах 1 и 2 (триграфы, универсальные имени и сплайсинг линии)» как явно нет Вернуть преобразование от символов исходного файла к основному набору символов исходного источника. Вместо этого исходные символы позже преобразуются в набор символов выполнения, и вы получаете там символы Newline.

Другие советы

Если вам нужна определенная последовательность окончания линии, вы можете вставить ее явно и использовать строковую литеральную конкатенацию:

char* nitpicky = "I must have a \\r\\n line ending!\r\n"
"Otherwise, some other piece of code will misinterpret this line!";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top