在 C++ 中使用extern "C"与直接使用 C 语言存在本质区别,关键在于编译和链接机制的不同。
1. extern "C"的作用
extern "C"是 C++ 特有的语法,用于告诉编译器:“这段代码按 C 语言的规则编译和链接”。主要解决的问题是:
函数名修饰(Name Mangling):C++ 为支持重载(同名函数不同参数),会在编译时修改函数名(如int add(int a, int b)可能被编译为_Z3addii),而 C 语言不支持重载,函数名直接编译为原名称(如add)。
链接兼容性:当 C++ 代码需要调用 C 语言编写的库(如标准 C 库libc)时,若不使用extern "C",链接器会因函数名不匹配而报错(找不到_Z3addii)。 |