2011-10-05 3 views
13

나 C++에있는 작은 프로그램을 작성하고, 이상한 에러를 본적이있어 :오류 : 프로그램에서 길잃은 ' XXX': 이유가 무엇입니까?

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

내가 (숨겨진 문자 표시) 정력이 프로그램과 해당 라인을 쓰고 있어요 것은 :

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

이 오류는 단지이 행을 다시 복사해야하므로 오류를 해결하는 데는이 아니므로 오류 원인이 사라집니다.

모든 상대 옵션을 활성화 한 후에도 vim에 의해 숨겨진 일부 문자 때문에 오류가 발생한 것으로 보입니다!

이러한 오류의 원인에 대한 질문은입니다.

+0

실제 코드를 게시하지 않는 이유는 무엇입니까? – Nawaz

+0

실제 코드입니다. 전체 범위를 원해? 나는 유용했지만 필요하지 않으면 할 수 있었다. – Geoffroy

+0

무엇? 실제 코드는'> ---> ---'을 포함하고 있습니까? 그리고 마지막에'$'? – Nawaz

답변

23

"\302\240"U+00A0 NO-BREAK SPACE의 경우 UTF-8입니다. Vim은 일반적으로 특별한 것으로 강조하지 않으므로 'list' 모드가 활성화되어 있어도 Vim이 몰래 들어올 수 있습니다.

당신은 그들을 강조 할 수 있습니다

:set listchars+=nbsp:. 

또는 당신이 좋아하는 모든 문자.

+0

감사합니다.하지만이 문자가 내 코드에있는 이유는 무엇입니까? 나는 정력만으로 그 부분을 편집하기 때문에 어디에서 왔는지 모르겠습니다./ – Geoffroy

+2

@Geoffroy는 웹 페이지 나 맨 페이지 등에서 코드를 복사하여 붙여 넣지 않았습니까? – hobbs

+0

예, 직접 입력했습니다. – Geoffroy

0

나를 위해이 문제는 내 코드를 웹 브라우저에서 복사하여 왔습니다.

:%s///gvim에서 실행하여 모든 공백을 실제 공백으로 바꾸려고 시도했지만 실패했습니다.

이 오류를보고하는 모든 행의 첫 번째 공백을 삭제하고 공백 문자를 다시 삽입했습니다. 이것은 노동 집약이지만 찾을 수있는 유일한 해결책 인 것 같습니다.

+1

길잃이가'\ 302' 인 경우 해결책을 위해': % s, \ % o302,, g' – xoolive

0

나는 동일한 문제가 있었으며 각 줄 앞에 공백 문자 인코딩이있었습니다. 이는 Exchange 서버 & iCloud와 동기화 된 메모 프로그램에서 복사했기 때문에 발생했습니다. 내가해야 할 일은 모두 정상적인 것들과 정상적으로 다시 컴파일 된 모든 이상한 공간에 메모장을 사용하여 대체하는 것입니다.

8

앞에서 설명한 것처럼 원본에 표시되지 않는 문자가 있습니다. 이것에 대한 하나 개의 훌륭한 솔루션은 8 진수 모드에서 파일을 편집하는 것입니다 그리고 당신은 이러한 문자 "볼"수있을 것입니다 : 다음

od -c MyClass.hpp 

는 "낯선 사람"흐름 8 진수로 볼 수 있습니다 :

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 /
굵게

이 두 문자는 그런 다음 제거하고 다시 만들 수 있습니다

error: stray ‘\302’ in program 

같은 메시지의 원인이다.

감사합니다.

+1

+1을 사용할 수 있습니다. 잘 설명되고 다른 문자에도 적용됩니다.) – Geoffroy

+1

이것은 생명을 구하는 사람이었습니다 ! –

관련 문제