ошибка: заблудиться '\ XXX' в программе: почему? - PullRequest
13 голосов
/ 05 октября 2011

Я пишу небольшую программу на C ++ и сталкиваюсь со странной ошибкой:

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 после активации всех относительных параметров!

Вопрос о том, что могло вызвать эти ошибки.

Ответы [ 4 ]

23 голосов
/ 05 октября 2011

"\302\240" - это UTF-8 для U+00A0 NO-BREAK SPACE.Vim обычно не выделяет его как что-то особенное, поэтому его можно прокрасться, даже если у вас включен режим 'list'.

Вы можете выделить их с помощью:

:set listchars+=nbsp:.

или любой персонаж, который вам нравится.

8 голосов
/ 24 сентября 2013

Как уже упоминалось, это связано с некоторыми невидимыми символами в вашем источнике.Одним из отличных решений для этого является редактирование вашего файла в восьмеричном режиме, и вы сможете «увидеть» следующие символы:

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 

Затем их можно удалить и восстановить.

С уважением.

0 голосов
/ 19 сентября 2013

У меня была та же проблема, и это была кодировка символов для пробелов перед каждой строкой.Это произошло из-за копирования программ заметок, синхронизированных с сервером Exchange и iCloud.Все, что мне нужно было сделать, это применить замену всех с помощью блокнота ко всем странным пробелам с обычными, и все снова скомпилировалось нормально.

0 голосов
/ 02 апреля 2013

Для меня эта проблема возникла из-за копирования моего кода из веб-браузера.

Я пытался сделать :%s/ / /g в vim, чтобы заменить все пробелы реальными пробелами, но это не удалось.

Я удалил начальные пробелы во всех строках, сообщающих об этой ошибке, и снова вставил пробелы. Это трудоемкий процесс, но, похоже, это единственное решение, которое я смог найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...