"错误:偏离'\XXX'在 C++程序”:为什么会发生这种情况?
我正在用 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 隐藏的某些字符引起的!
问题是什么可能导致这些错误。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
“\302\240”
是U+00A0 NO-BREAK SPACE
的 UTF-8。 Vim 通常不会将其突出显示为任何特殊内容,因此即使您启用了'list'
模式,也有可能被人潜入。您可以使用以下内容突出显示它们:
或任何您喜欢的字符。
"\302\240"
is UTF-8 forU+00A0 NO-BREAK SPACE
. Vim won’t normally highlight it as anything special, so it’s possible for one to sneak in even if you have'list'
mode enabled.You can highlight them with:
or any character you like.
如前所述,这是由于源中存在一些不可见的字符所致。
一个很好的解决方案是以八进制模式编辑文件,您将能够“看到”这些字符:
然后您可以看到八进制流中的“陌生人”:
这两个粗体字符是导致以下消息的原因:
然后您可以删除它们并重建。
As aforementioned, it is due to some not visible characters in your source.
One great solution for this is to edit your file in octal mode and you will be able "to see" these characters:
Then you can see the "strangers" in the octal flow:
These two characters in bold are the cause of messages like:
You can then remove them, and rebuild.
对我来说,这个问题来自于从网络浏览器复制我的代码。
我尝试在 Vim 中执行
:%s/ / /g
将所有空格替换为真实空格,但这失败了。我删除了报告此错误的所有行的前导空格,并再次插入了空格字符。这是劳动密集型的,但似乎是我能找到的唯一解决方案。
For me this problem came from copying my code over from a web browser.
I tried doing a
:%s/ / /g
in Vim to replace all spaces with real spaces, but this has failed.I deleted the leading white space of all lines reporting this error and inserted the space characters again. This is labour intensive, but appears to be the only solution I could find.
我遇到了同样的问题,这是每行之前空格的字符编码。发生这种情况的原因是从与 Exchange Server 和 iCloud。我所需要做的就是应用并替换所有使用 记事本 的所有奇怪内容与正常的空格,一切都再次正常编译。
I had the same issue and it was the character encoding for the spaces before each line. This happened due to copying from notes programs that was synced up with Exchange Server and iCloud. All I needed to do is apply and replace all using Notepad to all the strange spaces with normal ones and everything compiled normally again.