C++和C使用相同类型的链接器吗?

Han*_*n M 2 c c++ linker

正如标题所示,C++和C在链接过程中是否使用相同类型的链接器?另外,对于C++和C的编译器,C++编译器是否构建在C编译器之上?

小智 6

两种实现都使用相同的链接器.但是,C++必须对所链接事物的名称和类型进行编码,以支持函数重载,以便它们不能与错误的函数链接.所以,如果你有两个像这样的C++函数:

 void func( int );
 void func( int, double);
Run Code Online (Sandbox Code Playgroud)

然后C++编译器将为这些函数生成类似func_int和的名称func_int_double.确切地说,生成的名称是特定于编译器的,并且不是由C++标准指定的.由于C不支持重载,C中不需要这样的机制,但如果要将C++代码与C链接,则需要关闭这种所谓的名称修改,这就是extern "C"构造所做的.