Search code examples
c++vimtext

"error: stray '\XXX' in C++ program": Why does this happen?


I'm writing a little program in C++, and come across a strange error:

src/Makefile/Tool.cpp:42:3: error: stray ‘\302’ in program
src/Makefile/Tool.cpp:42:3: error: stray ‘\240’ in program

I'm writing this program in Vim and the corresponding line (showing hidden characters) is:

>--->---std::vector<std::string> { "--debug" }$

This question is not about resolving this error, as I just have to copy back the line and the error-cause disappear.

It seems that the error is caused by some characters even hidden by Vim after activating all relative options!

The question is about what could have caused those errors.


Solution

  • "\302\240" is UTF-8 for U+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:

    :set listchars+=nbsp:.
    

    or any character you like.