错误:在程序中迷路'\ XXX':为什么?

Geo*_*roy 13 c++ vim text

我正在用C++编写一个小程序,并遇到一个奇怪的错误:

src/Makefile/Tool.cpp:42:3: error: stray ‘\302’ in program
src/Makefile/Tool.cpp:42:3: error: stray ‘\240’ in program
Run Code Online (Sandbox Code Playgroud)

我正在用vim编写这个程序,相应的行(显示隐藏的字符)是:

>--->---std::vector<std::string> { "--debug" }$ 
Run Code Online (Sandbox Code Playgroud)

这个问题不是解决这个错误,因为我只需要复制该行并且错误原因消失.

似乎错误是由激活所有相关选项后甚至被vim隐藏的一些字符引起的!

问题是可能导致这些错误的原因.

Jos*_*Lee 23

"\302\240"是UTF-8 U+00A0 NO-BREAK SPACE.Vim通常不会将其突出显示为任何特殊内容,因此即使您'list'启用了模式,也可以潜入其中.

你可以用以下方法突出显示

:set listchars+=nbsp:.
Run Code Online (Sandbox Code Playgroud)

或任何你喜欢的角色.

  • @Geoffroy你确定你没有从网页或手册页或其他东西复制粘贴任何代码吗? (2认同)

Rég*_*KLA 8

如上所述,这是由于您的来源中有一些不可见的字符.一个很好的解决方案是以八进制模式编辑文件,您将能够"看到"这些字符:

od -c MyClass.hpp
Run Code Online (Sandbox Code Playgroud)

然后你可以在八进制流中看到"陌生人":

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   /
Run Code Online (Sandbox Code Playgroud)

这两个粗体字符是消息的原因

error: stray ‘\302’ in program 
Run Code Online (Sandbox Code Playgroud)

然后,您可以删除它们,然后重建.

问候.