C++如何调用C语言函数?(extern "C"用法)

admin 百科 14
C++调用C函数需用extern "C"解决名称修饰问题:在头文件中用#ifdef __cplusplus extern "C" { #endif包裹声明,或在C++源文件中用extern "C"包含C头文件/定义函数。

C++如何调用C语言函数?(extern "C"用法)-第1张图片-佛山资讯网

在C++中调用C语言函数,核心是解决C++的名称修饰(name mangling)问题。C++编译器会对函数名按参数类型、返回值等信息做编码,而C编译器只保留原始函数名。如果不加处理,链接时会找不到符号。解决方法就是用 extern "C" 告诉C++编译器:“这个函数按C的方式命名和链接”。

在C++代码里声明C函数(最常见场景)

当你有现成的C头文件(比如 math.h 或自定义的 utils.h),又想在C++里用其中的函数,需要把C头文件的声明“包裹”进 extern "C" 块:

  • 直接包含系统C头文件一般不用改(如 #include ),因为标准头通常已内置了 extern "C" 判断
  • 但自己写的C头文件,建议在头文件内部加保护性写法,方便C/C++都能安全包含:

// utils.h
#ifndef UTILS_H
#define UTILS_H
<h1>ifdef __cplusplus</h1><p>extern "C" {</p><h1>endif</h1><p>int add(int a, int b);        // C函数声明
void print_message(const char* s);</p><h1>ifdef __cplusplus</h1><p>}</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/3851895a4c84" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">C语言免费学习笔记(深入)</a>”;</p><h1>endif</h1><h1>endif</h1><p>

登录后复制

这样C++源文件只需 #include "utils.h" 就能直接调用 add()print_message(),无需额外修饰。

标签: c语言 编码 ai c++ 解决方法

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~