Что Visual Studio подразумевает под нормализацией несовместимых окончаний строк? - PullRequest
229 голосов
/ 16 февраля 2009

Visual Studio иногда говорит мне:

Окончания строк в следующих файлах не согласованы. Хотите нормализовать окончания строк?

Затем он дает мне раскрывающийся список с другими стандартами или чем-то вроде, например, Windows, Mac, Unix и парой Unicode.

Что это значит и что произойдет, если я нажму Yes?

Ответы [ 10 ]

202 голосов
/ 16 февраля 2009

Обычно это означает, что у вас есть строки, заканчивающиеся чем-то отличным от пары возврата каретки / перевода строки. Это часто происходит при копировании и вставке с веб-страницы в редактор кода.

Нормализация концов строк - это просто проверка соответствия всех символов окончания строки. Он не позволяет одной строке оканчиваться на \r\n, а другую - \r или \n; первая - это концевая пара строк Windows, а остальные обычно используются для файлов Mac или Linux.

Поскольку вы разрабатываете в Visual Studio, вам, очевидно, захочется выбрать «Windows» из выпадающего списка. : -)

72 голосов
/ 16 февраля 2009

Некоторые строки заканчиваются на \n.

Некоторые другие строки заканчиваются на \r\n.

Visual Studio предлагает сделать все строки одинаковыми.

40 голосов
/ 12 февраля 2011

Если вы используете Visual Studio 2012:

Перейти в меню Файл Дополнительные параметры сохранения → выбрать Окончания строки ввести как Windows (CR LF) .

11 голосов
/ 10 апреля 2017

Чтобы включить или отключить эту опцию, выполните следующие шаги из меню бар:

Инструменты Опции Среда Документы Проверка соответствия концов линии при нагрузке

7 голосов
/ 16 февраля 2009

Файл, который вы редактируете, был отредактирован в другом редакторе, который не использует те же окончания строк, в результате чего получился файл со смешанными окончаниями строк.

Используемые в конце строки символы ASCII:

CR, возврат каретки
LF, перевод строки

Windows = CRLF
Mac OS 9 или более ранняя версия = CR
Unix = LF

6 голосов
/ 16 февраля 2009

Новая статья в Википедии может вам помочь. Вот выдержка:

Различные соглашения новой строки часто вызывают текстовые файлы, которые были переданы между Системы разных типов должны отображаться некорректно. Например, файлы, созданные на Системы Unix или Apple Macintosh могут отображаться в виде одной длинной строки в некоторых программах, работающих на Майкрософт Виндоус. И наоборот, при просмотре файла, созданного на компьютере Windows, на Система Unix, дополнительный CR может отображаться как ^ M или в конце каждой строки, или как разрыв второй строки.

5 голосов
/ 16 февраля 2009

Это означает, что, например, некоторые из ваших строк текста имеют <Carriage Return><Linefeed> (стандарт Windows), а некоторые заканчиваются просто <Linefeed> (стандарт Unix).

Если вы нажмете «да», эти строки в вашем исходном файле будут преобразованы в один и тот же формат.

Это не будет иметь никакого значения для компилятора (потому что конец строк считается простым пробелом), но может иметь некоторые отличия от других инструментов (например, 'diff' в вашей системе контроля версий).

4 голосов
/ 23 сентября 2010

Это не просто Visual Studio ... Это были бы любые инструменты, которые читают файлы, компиляторы, компоновщики и т. Д., Которые могли бы справиться с этим.

В целом (для разработки программного обеспечения) мы принимаем проблему с завершением многоплатформенной линии, но разрешаем с ней справляться ПО контроля версий.

2 голосов
/ 12 октября 2018

Когда вы копируете, вставляете что-то из Интернета, вы можете получить несовместимые окончания строк.
Чтобы это исправить, вы можете использовать расширение Visual Studio «Унификатор конца строки», которое может автоматически согласовать окончание строки при сохранении файла.

enter image description here

2 голосов
/ 17 августа 2009

Существует надстройка для Visual Studio 2008, которая преобразует формат конца строки при сохранении файла. Вы можете скачать его здесь: http://grebulon.com/software/stripem.php

...