YouCompleteMe analysiert #include nicht

YouCompleteMe analysiert #include nicht

Du vervollständigst michhat gut funktioniert, bis ich Ubuntu von 16 auf 18 aktualisiert habe.

Jetzt versteht es nicht, using std::cin;zu sagen

kein Mitglied mit dem Namen „cin“ im Namespace „std“; meinten Sie „min“?

Es liest auch keine Klassennamen ein, die in meinen eigenen Header-Dateien definiert sind.

Ich habe versucht, YouCompleteMe, git pulldie neueste Version, neu zu installieren git submodule update.

/usr/lib/llvm-8/lib/libclang.soIch habe auch den Pfad zu libclang in .vimrc und den Pfad zur C++-Standardbibliothek /usr/include/c++/7/in .vim/.ycm_extra_conf.py überprüft/aktualisiert.

Der gesamte C++-Quellcode wird ohne Fehler mit nahezu identischen Kompilierungsflags kompiliert.

Antwort1

Nach dem Lesen der README-Datei aufYouCompleteMe-Github-Seiteund Renn

$ 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.
...

Gehen Sie in ~/.vim/.ycm_extra_conf.py und fügen Sie die Pfade danach #include <...> search starts here:im Flag-Array mit „-isystem“ vor jedem hinzu und entfernen Sie die alten Includes.

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',
 # ...
]

Starten Sie vim neu und das Problem ist behoben.

verwandte Informationen