[英]“error: stray '\XXX' in C++ program”: Why does this happen?
我正在用 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 隱藏了!
問題是什么可能導致這些錯誤。
"\\302\\240"
是U+00A0 NO-BREAK SPACE
UTF-8。 Vim 通常不會將它突出顯示為任何特別的東西,因此即使您啟用了'list'
模式,也有可能有人偷偷溜進來。
您可以使用以下方法突出顯示它們:
:set listchars+=nbsp:.
或任何你喜歡的角色。
如前所述,這是由於您的來源中有一些不可見的字符。
一個很好的解決方案是在八進制模式下編輯您的文件,您將能夠“看到”這些字符:
od -c MyClass.hpp
然后你可以看到八進制流中的“陌生人”:
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 /
這兩個粗體字符是導致以下消息的原因:
錯誤:程序中的“\\302”
然后,您可以刪除它們,然后重新構建。
對我來說,這個問題來自從網絡瀏覽器復制我的代碼。
我嘗試在 Vim 中執行:%s/ / /g
以將所有空格替換為實際空格,但這失敗了。
我刪除了所有報告此錯誤的行的前導空格並再次插入空格字符。 這是勞動密集型的,但似乎是我能找到的唯一解決方案。
我有同樣的問題,它是每行之前空格的字符編碼。 發生這種情況是由於從與Exchange Server和iCloud同步的筆記程序進行復制。 我需要做的就是使用記事本將所有奇怪的空間應用並替換為正常的空間,然后再次正常編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.