C++面试题更新 2026-08-03

在 C++ 程序设计中,extern 关键字的主要用途有哪些?另外,extern \"C\" 又是做什么的?请分别说明。

考察说明

考查对 C++ 中 extern 关键字及 extern "C" 链接规范的理解和应用。

回答思路

  1. 【回答框架 1】extern 是 C++ 中的存储类说明符,用于声明变量或函数具有外部链接。对于变量,extern 声明告诉编译器该变量在别处定义,不分配内存;对于函数,extern 是默认的,函数声明默认具有外部链接。
  2. 【回答框架 2】extern \"C\" 用于指定 C 链接规范,它告诉 C++ 编译器对函数或变量使用 C 语言的链接方式,即不进行名字修饰(name mangling)。这是因为 C++ 支持函数重载,需要修饰函数名,而 C 语言不需要。
  3. 【回答框架 3】extern \"C\" 通常用于在 C++ 中调用 C 语言编写的库函数,或在 C++ 中定义可供 C 语言调用的函数。它的作用域可以应用于单个函数声明,也可以应用于代码块,例如 extern \"C\" { ... }。
  4. 【回答框架 4】extern \"C\" 不能用于声明变量,但可以用于限定函数和变量?实际上,extern \"C\" 可以用于函数和变量,但通常用于函数。它只影响链接,不影响类型检查。
  5. 【关键点 1】extern 用于声明外部变量或函数,表明其定义在别处,不分配存储。
  6. 【关键点 2】extern 对函数声明是默认的,但通常省略。
  7. 【关键点 3】extern \"C\" 指定 C 链接,避免名字修饰,用于混合 C 和 C++ 代码。
  8. 【易错点 1】误以为 extern 可以定义变量,实际上它只是声明。
  9. 【易错点 2】在 C++ 中直接包含 C 头文件时,忘记用 extern \"C\" 包裹,导致链接错误。