Ошибка: отклонение '\ XXX' в программе: Почему?
Я пишу небольшую программу на С++ и нахожу странную ошибку:
src/Makefile/Tool.cpp:42:3: error: stray ‘\302’ in program
src/Makefile/Tool.cpp:42:3: error: stray ‘\240’ in program
Я пишу эту программу в vim, и соответствующая строка (показывая скрытые символы):
>--->---std::vector<std::string> { "--debug" }$
Этот вопрос не является об устранении этой ошибки, так как мне просто нужно скопировать строку и исчезнуть ошибка.
Кажется, что ошибка вызвана некоторыми символами, даже скрытыми vim после активации всех относительных параметров!
Вопрос о том, что могло вызвать эти ошибки.
Ответы
Ответ 1
"\302\240"
- UTF-8 для U+00A0 NO-BREAK SPACE
. Vim обычно не выделяет его как нечто особенное, поэтому его можно прокрасть, даже если у вас включен режим 'list'
.
Вы можете выделить их с помощью
:set listchars+=nbsp:.
или любой символ, который вам нравится.
Ответ 2
Как уже упоминалось, это связано с некоторыми видимыми символами в вашем источнике. Одним из замечательных решений для этого является редактирование файла в восьмеричном режиме, и вы сможете "видеть" эти символы:
od -c MyClass.hpp
Затем вы можете увидеть в восьмеричном потоке "незнакомцев":
0001240 t s t r i n g & n a m e )
0001260 { **302 240** t h i s - > n a m e =
0001300 n a m e ; } \n \n \n \t \t \t \t /
Эти два символа, выделенные жирным шрифтом, являются причиной сообщений типа
error: stray ‘\302’ in program
Затем вы можете удалить их и перестроить.
С уважением.
Ответ 3
Для меня эта проблема возникла при копировании моего кода из веб-браузера.
Я попытался сделать :%s/ / /g
в vim
, чтобы заменить все пробелы на реальные пробелы, но это не удалось.
Я удалил ведущие пробелы всех строк, сообщающих об этой ошибке, и снова вставил символы пробела. Это трудоемкий процесс, но это единственное решение, которое я мог бы найти.
Ответ 4
У меня была такая же проблема, и это была кодировка символов для пробелов перед каждой строкой. Это произошло из-за копирования из заметок, которые были синхронизированы с сервером Exchange и iCloud. Все, что мне нужно было сделать, это применить замену всех, используя блокнот, ко всем странным пространствам с нормальными, и все снова скомпилировано нормально.