我正在用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条答案
按热度按时间zzzyeukh1#
"\302\240"
是U+00A0 NO-BREAK SPACE
的UTF-8。Vim通常不会将其突出显示为任何特殊的东西,因此即使您启用了'list'
模式,也有可能潜入其中。您可以使用以下命令突出显示它们:
或者任何你喜欢的角色
rkue9o1l2#
如前所述,这是由于您的源代码中的一些不可见字符。
一个很好的解决方案是在八进制模式下编辑文件,您将能够“看到”这些字符:
然后你可以看到八进制流中的“陌生人”:
这两个粗体字符是导致以下消息的原因:
错误:程序中的“\302”
然后,您可以删除它们并重建。
ezykj2lf3#
对我来说,这个问题来自于从Web浏览器复制我的代码。
我尝试在Vim中执行
:%s/ / /g
,将所有空格替换为真实的空格,但失败了。我删除了报告此错误的所有行的白色,并再次插入空格字符。这是劳动密集型的,但似乎是我能找到的唯一解决方案。
vmdwslir4#
我也遇到了同样的问题,那就是每行前空格的字符编码。这是由于从与Exchange Server和iCloud同步的notes程序中复制而发生的。我所需要做的就是使用Notepad将所有奇怪的空间应用并替换为正常的空间,然后再次正常编译。