gccsense与clang_complete

Iva*_*Siu 13 vim clang code-completion clang-complete

我已经使用omniCppComplete + ctags一段时间了,并希望进一步改进代码完成.

根据这里的建议[ 1 ],gccsense和clang_complete似乎是替代品.但是,我不确定哪一个更好.他们的表现有什么想法吗?
谢谢!

更新:在我尝试clang_complete之后,我发现完成速度非常不可接受.然后我尝试使用libclang.dylib,它加速了很多,但仍然让人觉得滞后.我想我现在应该坚持使用ctags.

izh*_*hak 21

您应该使用clang_complete,而不是gccsense.

这里的要点是两者的架构.这两种解决方案背后的想法非常相似:如果没有访问内部编译器(gcc)信息(抽象语法树),您无法获得正常的C++完成,而gcc没有为您提供足够的接口.访问此信息的实现部分虽然在这里有很大的不同:gccsense是一种"黑客" - 它是一个自定义构建的gcc,能够存储必要的信息,以便进一步提供它来插件,而clang_complete通过另一种方式使用替代方案编译器:clang,其创建的主要目标之一就是使外部工具可以轻松访问AST.

因此,在使用gccsense的情况下,你需要使用一种自定义gcc编译器编译你的代码,这已经有点过时了(gccsense正在使用gcc 4.4),并且将不断需要开发人员的功能支持.相反,clang_complete并不太依赖于clang编译器,它将它用作外部工具.

至于性能:再次clang被设计为比gcc更快,它是.在Windows上Clang_complete可能比在MacOS/Linux上略慢,但是当时甚至无法为Windows编译gccsense.