vim ctag导致了对乐趣的错误定义
vim ctag leading to the wrong definition of fun
我正在使用 vim 的 ctag 来浏览 c++ 代码。在许多情况下,它工作正常。但是在以下情况下会出现一些错误:
vector<int> v;
v.push_back(10);
当我从这里的"push_back"导航时,它会将我带到/usr/include/c++/4.4.7/bits/basic_string.h 的 push_back()
我想知道这是 vim/ctag 的错误还是缺点?
谢谢!
Vim 的标签导航不是语法树感知的。默认情况下,它会跳转到标签文件中的第一个匹配标签。
ctags 只是跳到第一个匹配的标签:"push_back()"。它不知道"v"的类型是"std::vector"。解决此问题的唯一方法是不使用 ctags。我尝试了不同的 vim 插件,但其中大多数都无法正常工作或根本不适用于 c++。
有插件clang_complete和YouCompleteMe,它们使用clang C++编译器来生成语法树。它们用于自动完成,但它们还提供在 C++ 代码中导航的功能。YouCompleteMe比clang_complete快得多,但我认为安装和配置它更困难。
https://github.com/Valloric/YouCompleteMe
https://github.com/Rip-Rip/clang_complete
相关文章:
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 使用命名空间时出现多个定义错误
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 在运算符重载定义中使用成员函数(const错误)
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 已定义函数时出现 G++ "未定义的引用"错误
- C++ G++ 编译器 - 错误:隐式声明的定义
- 链接 cmake 时出现未定义的引用错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 链接阶段出现多重定义错误
- 已经以性格错误定义了
- vim ctag导致了对乐趣的错误定义
- C++ 隐式声明的编译器错误定义
- 编译器错误-定义问题.C++