简单来说,clang的设计支持代码补全,而gcc则不支持。Clang有一个命令行选项,可以在源文件的某个位置打印可能的补全内容,这使得它在脚本中易于使用:直接调用clang、解析输出结果,完成。GCC没有类似的功能。 至于为什么,可以看看gcc和clang之间的差异列表: [...] Clang从一开始就被设计成API,允许其被源代码分析工具、重构、IDE(等等)以及代码生成所复用。GCC则作为一个单块静态编译器构建,这使得它极其难以用作API并集成到其他工具中。此外,其历史设计和当前 政策使得难以将前端与编译器的其他部分分离。