【问题标题】:Why is clang used for autocompletion in vim and emacs?为什么在 vim 和 emacs 中使用 clang 进行自动补全?
【发布时间】:2026-01-25 19:20:06
【问题描述】:

为什么不使用 gcc 呢?它们之间的区别在哪里?为什么几乎所有自动完成插件都需要 clang?

【问题讨论】:

  • Here 是一个通用的比较。 Clang 比 gcc 更容易完成。

标签: gcc vim emacs autocomplete clang


【解决方案1】:

简单的答案是,clang 旨在支持完成,而 gcc 不支持。

Clang 有一个命令行选项,可以在源文件中的给定点打印出可能的补全,这使得在脚本中使用起来很容易:只需对 clang 进行壳,解析其输出,完成。 Gcc 没有可比性。

至于为什么,看这个list of differences between gcc and clang

[...]

  • Clang 从一开始就被设计为一个 API,允许源分析工具、重构、IDE(等)以及代码生成重用它。 GCC 是作为一个单一的静态编译器构建的,这使得它很难作为 API 使用并集成到其他工具中。此外,它的历史设计和 current policy 使得前端与编译器的其余部分难以分离。

【讨论】:

    最近更新 更多