MST

星途 面试题库

面试题:C++中extern "C"在函数声明中的作用及使用场景

请解释在C++中,extern "C"用于函数声明时的具体作用,并举例说明至少两种适合使用extern "C"的场景。
26.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. extern "C"的作用
    • 在C++中,函数名会进行“名字改编”(name mangling),以支持函数重载等特性。而C语言没有名字改编机制。extern "C"的作用是告诉C++编译器,声明的函数要按照C语言的方式进行编译和链接,即不进行名字改编。这样C++代码就能调用C语言编写的函数,或者与其他遵循C语言调用约定的代码进行交互。
  2. 适合使用extern "C"的场景
    • 调用C库函数
      • 许多底层库,如POSIX库函数(像printffopen等)是用C语言编写的。在C++程序中调用这些函数时,需要使用extern "C"声明。
      • 示例代码:
#include <stdio.h>
extern "C" int printf(const char *format,...);
int main() {
    printf("Hello, World!\n");
    return 0;
}
  • 实现C++与C语言的混合编程
    • 当一个项目一部分用C语言实现,另一部分用C++实现时,为了使两部分代码能互相调用函数,需要extern "C"。例如,假设我们有一个C语言编写的函数add,在C++代码中调用它。
    • C语言代码add.c
#include <stdio.h>
int add(int a, int b) {
    return a + b;
}
 - C++代码`main.cpp`:
extern "C" int add(int a, int b);
#include <iostream>
int main() {
    int result = add(3, 5);
    std::cout << "The result of addition is: " << result << std::endl;
    return 0;
}