You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用extern "C"声明函数后,是否需要同样用其定义?

关于C++中extern "C"的链接属性问题

你不需要在foo.cpp中额外添加extern "C"包裹函数定义,仅靠头文件的声明就足以保证C语言链接(无名称修饰),原因如下:

  • 当foo.cpp(C++源文件)包含foo.h时,预处理器会触发__cplusplus宏,头文件里的extern "C" { ... }代码块会被展开,这已经将int foo(int x);的声明标记为C语言链接属性。
  • C++编译器遵循「一次声明决定链接属性」的规则:只要函数的声明带有extern "C"属性,后续对应的定义会自动继承该链接属性,无需重复声明。

因此foo.cpp只需要这样写就足够:

#include "foo.h"

int foo(int x) {
    // 函数实现代码
}

内容的提问来源于stack exchange,提问作者einpoklum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:50:22