正如标题所示,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"构造所做的.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |