YouCompleteMe가 #include를 구문 분석하지 않습니다.

YouCompleteMe가 #include를 구문 분석하지 않습니다.

너는 나를 완성시켜Ubuntu를 16에서 18로 업그레이드할 때까지는 잘 작동했습니다.

using std::cin;이제 말하는 것이 이해가 되지 않습니다.

'std' 네임스페이스에 'cin'이라는 멤버가 없습니다. '분'을 의미했나요?

또한 내 헤더 파일에 정의된 클래스 이름도 읽지 않습니다.

git pull최신 버전인 YouCompleteMe를 다시 설치해 보았습니다 git submodule update.

또한 .vimrc의 libclang 경로 와 .vim/.ycm_extra_conf.py /usr/lib/llvm-8/lib/libclang.so의 C++ 표준 라이브러리 경로를 확인/업데이트했습니다./usr/include/c++/7/

모든 C++ 소스 코드는 거의 동일한 컴파일 플래그를 사용하여 오류 없이 컴파일됩니다.

답변1

README를 따른 후YouCompleteMe github 페이지그리고 달리다

$ echo | clang -v -E -x c++ -
clang version 8.0.0-3~ubuntu18.04.1 (tags/RELEASE_800/final)
...
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0
 /usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward
 /usr/include/clang/8.0.0/include
 /usr/local/include
 /usr/include/i386-linux-gnu
 /usr/include
End of search list.
...

#include <...> search starts here:~/.vim/.ycm_extra_conf.py로 이동하여 각 앞에 '-isystem'을 사용하여 플래그 배열 뒤에 경로를 추가하고 이전 포함을 제거합니다.

flags = [
 # ...
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0',
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/i386-linux-gnu/c++/7.4.0',
 '-isystem',
 '/usr/bin/../lib/gcc/i686-linux-gnu/7.4.0/../../../../include/c++/7.4.0/backward',
 # ...
]

vim을 다시 시작하면 문제가 해결됩니다.

관련 정보