当前位置: 首页 > news >正文

C++ extern “C“ 用法

extern “C”

由于c++中需要支持函数重载,所以c和c++中对同一个函数经过编译后生成的函数名不相同

extern “C”主要作用就是为了实现c++代码能够调用其他 c 语言代码

1(不常用)
//告诉编译器 show() 函数按c语言的方式进行编译和链接
extern "C" void show();
2(常用)
// C头文件中使用
#if __cplusplusextern "C"{
#endif
//放 C头文件声明
//void func1();
//...#if __cplusplus}
#endif

其他

在Linux下测试:
c函数:	 	void MyFunc(){} ,被编译成函数: MyFunc
c++函数: 	void MyFunc(){},被编译成函数: _Z6Myfuncv

由于c++中需要支持函数重载,所以 c 和 c++ 中对同一个函数经过编译后生成的函数名是不相同的。

这就导致了一个问题,如果在 c++ 中调用一个使用 c 语言编写模块中的某个函数,
那么 c++ 是根据 c++ 的名称修饰方式来查找并链接这个函数,那么就会发生链接错误。

以上例,c++ 中调用 MyFunc 函数,在链接阶段会去找 _Z6Myfuncv,结果是没有找到的,
因为这个 MyFunc 函数是c语言编写的,生成的符号是 MyFunc。

所以

extern "C"的主要作用就是为了实现 c++ 代码能够调用其他 c 语言代码。

加上extern "C"后,这部分代码编译器按c语言的方式进行编译和链接,而不是按c++的方式。

相关文章:

C++ extern “C“ 用法

extern “C” 由于c中需要支持函数重载,所以c和c中对同一个函数经过编译后生成的函数名是不相同的 extern “C” 的主要作用就是为了实现c代码能够调用其他 c 语言代码。 1(不常用) //告诉编译器 show() 函数按c语言的方式进行编译和链接 extern "C" voi…...

HTML面试题---专题四

文章目录 一、前言二、如何在 HTML 中嵌入音频文件&#xff1f;三、解释 <script> 标签中 defer 属性的用途。四、如何在 HTML 中创建粘性/固定导航栏&#xff1f;五、HTML 中的 span 元素的用途是什么&#xff1f;六、如何使 HTML 元素可拖动&#xff1f;七、解释 <i…...

stm32项目(11)——基于stm32的俄罗斯方块游戏机

1.功能设计 使用stm32f103zet6平台&#xff0c;以及一块LCD屏幕&#xff0c;实现了一个俄罗斯方块游戏机。可以用按键调整方块的位置、还可以控制方块下降的速度&#xff01; 2.视频演示 俄罗斯方块 3.俄罗斯方块发展史 俄罗斯方块是一种经典的拼图游戏&#xff0c;由苏联俄罗…...

【计算机网络基础2】IP地址和子网掩码

1、IP地址 网络地址 IP地址由网络号&#xff08;包括子网号&#xff09;和主机号组成&#xff0c;网络地址的主机号为全0&#xff0c;网络地址代表着整个网络。 广播地址 广播地址通常称为直接广播地址&#xff0c;是为了区分受限广播地址。 广播地址与网络地址的主机号正…...

ES6-import后是否有{}的区别

在ES6中&#xff0c;import语句用于导入其他模块中的变量、函数、类等。在使用import语句时&#xff0c;可以选择是否使用花括号{}来包裹导入的内容&#xff0c;这会影响导入的内容的使用方式。 1.使用花括号{}&#xff1a; 当使用花括号{}时&#xff0c;表示只导入指定的变量…...

rv1126-rv1109-以太网功能-eth-(原理篇)

这里只是浅浅分析一下 1.主控里面会内置mac 2.mac有组接口接到phy(网络芯片:8201) 3.phy(网络芯片:8201)接到网口 //这里就到达硬件的接口了,大致就是这个原理; 4.然后涉及到软件部分 就是mdio总线;这个总线是注册phy用的; 如果注册失败会导致网口无法使用 [ 1.002751] m…...

【IDEA】反向撤销操作快捷键 ctrl+shift+z 和搜狗热键冲突的解决办法

当我们执行某些操作时与搜狗热键冲突&#xff0c;直接取消搜狗的快捷键即可&#xff01;&#xff01;&#xff01;以下以 ctrlshiftz 为例。 在输入悬浮框右键找到更多设置 按键里面找到系统功能快捷键设置 取消掉冲突的热键即可...

数据结构之----逻辑结构、物理结构

数据结构之----逻辑结构、物理结构 目前我们常见的数据结构分别有&#xff1a; 数组、链表、栈、队列、哈希表、树、堆、图 而它们可以从 逻辑结构和物理结构两个维度进行分类。 什么是逻辑结构&#xff1f; 逻辑结构是指数据元素之间的逻辑关系&#xff0c;而逻辑结构又分为…...

pip 通过git安装库

举例&#xff1a;安装peft库 git clone https://github.com/huggingface/peft.git cd peft python -m pip install . 解释&#xff1a; 使用git clone克隆PEFT库的代码。进入克隆的目录。使用python -m pip install .来安装PEFT库。 补充&#xff1a;使用pip安装到指定编译器…...

C语言——从终端输入 3 个数 a、b、c,按从大到小的顺序输出。

方式一 #include <stdio.h> int main() {int a, b, c, temp;printf("请输入三个数&#xff1a;\n");scanf("%d %d %d", &a, &b, &c);if (a < b) {temp a;a b;b temp;}if (a < c) {temp a;a c;c temp;}if (b < c) {temp…...

【JVM从入门到实战】(二)字节码文件的组成

一、Java虚拟机的组成 二、字节码文件的组成 字节码文件的组成 – 应用场景 字节码文件的组成部分-Magic魔数 什么是魔数&#xff1f; Java字节码文件中的魔数 文件是无法通过文件扩展名来确定文件类型的&#xff0c;文件扩展名可以随意修改&#xff0c;不影响文件的内容。…...

OPC UA常见故障信息代码

错误信息解释0x00000000操作成功。0x40000000值不确定&#xff0c;但原因不明。0x80000000值为坏&#xff0c;但原因不明。Bad_UnexpectedError 0x80010000发生非预期错误。Bad_InternalError 0x80020000编程或配置错误时发生内部错误。Bad_OutOfMemory 0x80030000完成操作所需…...

第20关 快速掌握K8S下的有状态服务StatefulSet

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维&#xff0c;K8s是如何来管理有状态服务的呢&#xff1f;跟着博哥来会会它们吧&#xff01; 前面我们讲到了Deployment、DaemonSet都只适合用来跑无状态的服务pod&#xff0c;那么这里的Statefu…...

​如何使用https://www.krea.ai/来实现文生图,图生图,

网址&#xff1a;https://www.krea.ai/apps/image/realtime Krea.ai 是一个强大的人工智能艺术生成器&#xff0c;可用于创建各种创意内容。它可以用来生成文本描述的图像、将图像转换为其他图像&#xff0c;甚至写博客文章。 文本描述生成图像 要使用 Krea.ai 生成文本描述…...

点滴生活记录2

我从小跟着我爷爷奶奶&#xff0c;小学六年级转到县城上小学&#xff0c;就没跟我奶奶他们住一起了。十一回家&#xff0c;把奶奶接到我这住&#xff0c;细想&#xff0c;自六年级之后&#xff0c;就很少跟奶奶住一起了。 奶奶&#xff08;间歇性&#xff09;耳聋&#xff0c;为…...

【带头学C++】----- 九、类和对象 ---- 9.12 C++之友元函数(9.12.1---12.4)

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️创做不易&#xff0c;麻烦点个关注❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ ❤️❤️❤️❤️❤️❤️❤️❤️❤️文末有惊喜&#xff01;献舞一支&#xff01;❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目录 9.12…...

设计模式的定义

1 组合模式: 整体-部分模式,它是一种将对象组合成树状层次结构的模式,用来表示整体和部分的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式 1.1 特点: 组合模式使得客户端代码可以一致的处理单个对象和组合对象更容易在组合体内加入新的对象,客户端不…...

【Kubernetes】存储类StorageClass

存储类StorageClass 一、StorageClass介绍二、安装nfs provisioner&#xff0c;用于配合存储类动态生成pv2.1、创建运行nfs-provisioner需要的sa账号2.2、对sa授权2.3、安装nfs-provisioner程序 三、创建storageclass&#xff0c;动态供给pv四、创建pvc&#xff0c;通过storage…...

【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)

note SFT使用交叉熵损失函数&#xff0c;目标是调整参数使模型输出与标准答案一致&#xff0c;不能从整体把控output质量&#xff0c;RLHF&#xff08;分为奖励模型训练、近端策略优化两个步骤&#xff09;则是将output作为一个整体考虑&#xff0c;优化目标是使模型生成高质量…...

Spring Boot监听redis过期的key

Redis支持过期监听&#xff0c;可以实现监听过期数据&#xff0c;实现过程如下 1、pom依赖 <!-- Redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></depend…...

Linux内核核心机制与开发实践详解

1. Linux内核概述与预备知识Linux内核作为操作系统的核心组件&#xff0c;承担着管理硬件资源、提供系统服务的关键角色。要深入理解Linux内核&#xff0c;需要具备以下基础知识储备&#xff1a;C语言能力&#xff1a;内核代码90%以上由C语言编写&#xff0c;需掌握指针操作、内…...

不花一分钱!用闲置电脑搭建永久Mac远程控制台(VNC+cpolar固定TCP教程)

零成本打造24小时在线的Mac远程开发环境 你是否有一台闲置的Mac电脑放在角落积灰&#xff1f;或者需要随时随地访问家里的开发环境&#xff1f;将旧Mac改造成全天候在线的远程工作站&#xff0c;不仅能充分利用闲置资源&#xff0c;还能为移动办公提供极大便利。本文将手把手教…...

2025最权威的AI论文助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下诸多处于主流地位的AI论文工具当中&#xff0c;Grammarly于语法校对以及学术表达优化…...

避开SAP记账第一个坑:F-02凭证录入的5个细节与FS10N对账技巧

SAP财务实操避坑指南&#xff1a;F-02凭证录入的5个关键细节与FS10N高效对账技巧 刚接触SAP FI模块的中级用户&#xff0c;往往在完成基础培训后信心满满地开始独立操作&#xff0c;却在F-02凭证录入时频频踩坑。这些看似简单的字段选择背后&#xff0c;隐藏着财务逻辑与系统设…...

ugrep布尔搜索实战:使用AND/OR/NOT构建复杂查询

ugrep布尔搜索实战&#xff1a;使用AND/OR/NOT构建复杂查询 【免费下载链接】ugrep Ugrep 4.3: an ultra fast, user-friendly, compatible grep. Ugrep combines the best features of other grep, adds new features, and searches fast. Includes a TUI and adds Google-lik…...

FireRedASR-AED-L从零开始教程:无需Python环境,镜像开箱即用识别中英混合语音

FireRedASR-AED-L从零开始教程&#xff1a;无需Python环境&#xff0c;镜像开箱即用识别中英混合语音 你是不是经常遇到这样的场景&#xff1f;手头有一段重要的会议录音&#xff0c;里面既有中文讨论&#xff0c;又夹杂着几个英文专业术语&#xff0c;想把它转成文字却找不到…...

论文魔法盒:书匠策AI,期刊论文写作的“超级外挂”

在学术的奇妙世界里&#xff0c;论文写作就像是一场充满挑战的魔法冒险。尤其是期刊论文&#xff0c;它要求学者们不仅要有深厚的学术功底&#xff0c;还得掌握各种写作技巧和规范。不过&#xff0c;现在有了书匠策AI这个神奇的“魔法盒”&#xff0c;期刊论文写作不再是令人望…...

YOLO26改进策略【卷积层】| arXiv 2025 加权卷积Weighted Conv 密度函数提表征 + 零参扩展降负担,提升目标检测精度

一、本文介绍 本文记录的是利用加权卷积改进 YOLO26 的卷积层特征提取部分。 Weighted Convolution(加权卷积)通过空间密度函数与标准卷积核加权结合,实现YOLO26特征提取中像素位置依赖的差异化权重分配。本文利用Weighted Convolution算子,通过对称衰减的密度函数强化中…...

Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错

Cursor AI模型切换指南&#xff1a;从ChatGPT换到Gemini&#xff0c;这几步千万别做错 在当今快速迭代的AI开发领域&#xff0c;多模型协作已成为提升生产力的关键策略。作为一款深度整合AI能力的智能编辑器&#xff0c;Cursor允许开发者在不同AI模型间灵活切换&#xff0c;但…...

OpenClaw技能市场巡礼:Top5适合Phi-3-vision-128k-instruct的图文处理插件

OpenClaw技能市场巡礼&#xff1a;Top5适合Phi-3-vision-128k-instruct的图文处理插件 1. 为什么需要为多模态模型搭配专用技能&#xff1f; 去年我在尝试用OpenClaw处理一批产品截图时&#xff0c;发现一个有趣现象&#xff1a;当我把图片直接丢给普通文本模型时&#xff0c…...