YouCompleteMe 未解析 #include

YouCompleteMe 未解析 #include

你让我完整在我将 Ubuntu 从 16 升级到 18 之前,它运行良好。

现在它不using std::cin;明白

命名空间“std”中没有名为“cin”的成员;您的意思是“min”吗?

它也不会读取我自己的头文件中定义的类名。

我已尝试重新安装git pull最新版本的YouCompleteMe git submodule update

我还验证/更新了 .vimrc 中 libclang 的路径以及.vim/.ycm_extra_conf.py 中/usr/lib/llvm-8/lib/libclang.soC++ 标准库的路径/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.
...

进入 ~/.vim/.ycm_extra_conf.py 并#include <...> search starts here:在标志数组后面添加路径,每个路径前加上‘-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,问题已解决。

相关内容