我正在用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)
或任何你喜欢的角色.
如上所述,这是由于您的来源中有一些不可见的字符.一个很好的解决方案是以八进制模式编辑文件,您将能够"看到"这些字符:
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)
然后,您可以删除它们,然后重建.
问候.