g++ 和 clang 对 C++ 来说,就像 javac 对 Java 一样重要。 - g++:是 GNU 编译器集合的一部分,开源且广泛使用。 - clang:由苹果公司开发,现在是 LLVM 项目的一部分,以更快的编译速度和更友好的错误提示而闻名。 **编译器** - 词法分析 -> 语法分析 -> 语义分析 -> IR生成 -> 优化 -> 代码生成 - IR (中间表示)优化: - 死代码消除 - 常量传播 - 循环优化(展开、不变式外提) - 使用静态单赋值(SSA)形式便于优化