gccsense与clang_complete

时间:2011-03-28 04:46:05

标签: vim clang code-completion clang-complete

我一直在使用omniCppComplete + ctags一段时间,并希望进一步改进代码完成。

根据[1]中的建议,gccsense和clang_complete似乎是替代品。但是,我不确定哪一个更好。对他们表现的任何想法?
谢谢!

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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

GCCsense可以在Windows上构建。 在gcc 4.5.2上看到我的补丁: http://forums.codeblocks.org/index.php/topic,13812.msg94824.html#msg94824

我承认gccsense只是对gcc的攻击,但是clang从一开始就有更好的设计。

我希望有人能改进gcc / gccsense。