假设我的 C++ 符合标准并且我不依赖第三方库,那么在 makefile 中将“g++”替换为“clang++”时遇到的常见陷阱是什么?像不兼容的编译器选项、选项顺序的不同要求、其他一些限制等。
最佳答案
TL;博士: Clang 与 GCC 高度兼容 - 试一试吧。
在大多数情况下,Clang 可以用作 GCC 的替代品(clang
和 clang++
是“GCC 兼容驱动程序”)。 Clang 的设计考虑了 GCC 兼容性,并且 GCC 中可用的大多数选项也应该受 Clang 支持。
根据我的经验,在几个项目中交替使用 GCC 和 Clang,我不记得有任何 Clang 未能编译 GCC 成功的情况。
但是,根据项目的规模和复杂性,迁移可能不会完全顺利。有几个因素可能会产生影响,包括编译器错误和不同的代码生成,它们可能会影响应用程序性能,在极少数情况下甚至会影响应用程序功能。切换编译器是一个很大的变化,因此一旦您能够成功构建,最好运行所有可用的测试和基准测试。
以下是 SO 中针对 GCC 和 Clang 可能不兼容的几个示例。很有可能,您不会遇到此类问题。
RE:选项顺序 - GCC 和 Clang 都接受任何顺序的编译器标志。
关于gcc - 从 GCC 切换到 Clang 的常见问题是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866968/