为什么clang在vim和emacs中用于自动完成?

Kri*_*lis 5 vim emacs gcc autocomplete clang

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

mel*_*ene 1

简单的答案是 clang 被设计为支持补全,而 gcc 则不然。

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

至于为什么,请参阅gcc 和 clang 之间的差异列表

[...]

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