C 和 C++ 构建过程的区别

Pra*_*hra 2 c c++ linker compilation c-preprocessor

据我了解,C语言由4个阶段的编译过程组成:

在我的 Windows 操作系统上 -

  1. 预处理器

  2. 组装

  3. 汇编

  4. 链接

我想知道 C 编译器和 C++ 编译器在上述步骤方面是否有任何区别。我相信C++也可以由以上4个阶段组成。

从大局来看,是否存在我没​​有意识到的差异?

Grz*_*man 5

预处理和链接阶段基本相同(C 和 C++ 共享预处理器,并且链接的完成与源语言无关)。编译/汇编阶段仍然存在,但它必须有所不同——毕竟,我们在这里处理的是不同的语言。

编辑:C 与 C++ 编译的细节太多,无法在这里回答;)

  • 如果我没记错的话,由于模板和内联函数,C++ 确实需要一些链接器支持。也就是说,它不会抱怨重复的符号。 (2认同)
  • @PrasoonMishra:不,不是,除非它是其中的一部分 (2认同)
  • @GrzegorzHerman:纯C 链接器不需要支持“弱”符号和内联(即多重定义)函数。仅当支持 C++ 的额外要求时,才可以对两者使用相同的链接器。 (2认同)