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

C++的链接指示extern “C“

目录

    • 链接指示extern "C"
      • A.What(概念)
      • B.Why(extern "C"的作用)
      • C.How (如何使用链接指示extern "C")

链接指示extern “C”

A.What(概念)

extern"C" 用于在 C++ 代码中声明使用 C 语言编写的函数和全局变量, 在这样的声 明中,编译器会按照 C 语言的命名规则和链接规则进行处理,以保证函数或变量能够 正确地被调用和访问

B.Why(extern "C"的作用)

  • 避免名称修饰问题:

    在 C++ 中,全局变量的名称和函数名称会被 C++ 编译器进行名称修饰。而在 C 语言中,全局变量和函数没有这种修饰。当我们想在 C++ 代码中访问 C 语言编写的全局变量和函数时,需要在全局变量声明和函数前加 上 extern"C",以告诉编译器按照 C 语言的规则进行处理,避免名称修饰问题

  • 跨语言使用和编译:

    有权访问其它语言的编译器,并和当前 C++编译器具有兼容性

C.How (如何使用链接指示extern “C”)

  • 链接指示不能出现在类定义和函数定义的内部

  • 常规使用:
    在这里插入图片描述

    char str01[40] = "wodeshijie";
    cout<<strlen(str01)<<endl; //打印:10
    cout<<add(3,4)<<endl; //打印:7
    char str02[40] = "WODESHIJIE";
    strcat(str01,str02);
    cout<<str01<<endl; //打印:wodeshijieWODESHIJIE
    
  • 链接指示与头文件

    extern "C"
    {
    #include <string.h>
    }
    //使用string.h中的函数
    char zs[20] = "zhangsan"
    char zsCopy[20]= "";
    strcpy(zsCopy, zs);
    cout<<zsCopy<<endl; //打印:zhangsan
    
  • 导出C++函数到其它语言

    // myAdd函数可以被C程序调用
    extern "C" double myAdd(double a, double b){return a+b;}
    

注意:C语言不支持函数的重载
在这里插入图片描述

================================================================================


如果读者对C++感兴趣,欢迎阅读笔者关于在学习C++过程中的关于其知识点的总结系列,入口如下:

C++知识点总结全系列文章索引:
【C++知识点总结全系列 (01)】:数据类型、数据类型转换和变量
【C++知识点总结全系列 (02)】:C++中的语句、运算符和表达式详细总结
【C++知识点总结全系列 (03)】:函数(函数参数传递、可变参数、函数返回值等详细介绍)
【C++知识点总结全系列 (04)】:C++类的详细总结与分析
【C++知识点总结全系列 (05)】:IO 类的详细总结和分析
【C++知识点总结全系列 (06)】:STL六大组件总结- 配置器、容器、迭代器、适配器、算法和仿函数
【C++知识点总结全系列 (07)】:模板与泛型编程详细总结与分析
【C++知识点总结全系列 (08)】:面向对象编程OOP


相关文章:

C++的链接指示extern “C“

目录 链接指示extern "C"A.What&#xff08;概念&#xff09;B.Why&#xff08;extern "C"的作用&#xff09;C.How &#xff08;如何使用链接指示extern "C"&#xff09; 链接指示extern “C” A.What&#xff08;概念&#xff09; extern&quo…...

私域运营 组织架构

**揭秘私域社群运营的神秘面纱&#xff1a;角色与职能一网打尽&#xff01;** 在私域社群运营的大舞台上&#xff0c;每个角色都扮演着不可或缺的重要角色。今天&#xff0c;就让我们一起揭开这个神秘世界的面纱&#xff0c;看看这些角色们是如何协同作战&#xff0c;共同创造…...

Netty HTTP

Netty 是一个高性能的异步事件驱动的网络应用程序框架&#xff0c;支持快速开发可维护的高性能协议服务器和客户端。它广泛应用于开发网络应用程序&#xff0c;如服务器和客户端协议的实现。Netty 提供了对多种传输类型的抽象&#xff0c;如 TCP/IP 和 UDP/IP 等&#xff0c;使…...

什么是边缘计算技术和边缘计算平台?

随着物联网、5G技术和人工智能的不断发展&#xff0c;数据的规模和种类也在快速增加。在这种背景下&#xff0c;传统的云计算模式面临着一些问题&#xff0c;例如延迟高、网络拥塞等&#xff0c;这些问题限制了数据的处理速度和效率&#xff0c;降低了用户的使用体验。为了解决…...

自然语言处理(NLP)——法国工程师IMT联盟 期末考试题

1. 问题1 &#xff08;法语&#xff09;En langue arabe lcrasante majorit des mots sont forms par des combinaisons de racines et de schmes. Dans ce mcanisme... &#xff08;英语&#xff09;In Arabic language the vast majority&#xff08;十之八九&#xff09; of…...

Linux内核编译安装 - Deepin,Debian系

为什么要自己编译内核 优点 定制化&#xff1a;你可以根据自己的硬件和需求配置内核&#xff0c;去掉不必要的模块&#xff0c;优化性能。性能优化&#xff1a;移除不需要的驱动程序和特性&#xff0c;减小内核体积&#xff0c;提高系统性能。最新特性和修复&#xff1a;获取…...

安全防御,防火墙配置NAT转换智能选举综合实验

目录&#xff1a; 一、实验拓扑图 二、实验需求 三、实验大致思路 四、实验步骤 1、防火墙的相关配置 2、ISP的配置 2.1 接口ip地址配置&#xff1a; 3、新增设备地址配置 4、多对多的NAT策略配置&#xff0c;但是要保存一个公网ip不能用来转换&#xff0c;使得办公区的…...

追溯源码观察HashMap底层原理

引言&#xff08;Map的重要性&#xff09; 从事Java的小伙伴&#xff0c;在面试的时候几乎都会被问到Map&#xff0c;Map都被盘包浆了。Map是键值集合&#xff0c;使用的场景有很多比如缓存、数据索引、数据去重等场景&#xff0c;在算法中也经常出现&#xff0c;因为在Map中获…...

为什么渲染农场渲染的是帧,而不是视频?

在3D动画产业的壮阔画卷中&#xff0c;渲染农场作为幕后英雄&#xff0c;以其庞大的计算能力支撑起无数视觉奇观的诞生。这些由高性能计算机集群构成的系统&#xff0c;通过独特的逐帧渲染策略&#xff0c;解锁了单机难以企及的创作自由与效率。本文将深入剖析这一策略背后的逻…...

windows镜像下载网站

一个专注于提供精校、完整、极致的Windows系统下载服务的仓储站&#xff0c;网站托管于Github。 网站&#xff1a;https://hellowindows.cn/ 下载方式&#xff1a;ED2k&#xff0c;BT&#xff0c;百度网盘 MSDN - 山己几子木&#xff0c;提供Windows 11、Windows 10等不同版本…...

ollama + fastgpt 搭建免费本地知识库

目录 1、ollama ollama的一些操作命令: 使用的方式: 2、fastgpt 快速部署: 修改配置: config.json: docker-compose.yml: 运行fastgpt: 访问OneApi: 添加令牌和渠道: 登陆fastgpt,创建知识库和应用 3、总结: 附录: 1. 11434是ollama的端口: 2. m3e 测…...

pytorch中一些最基本函数和类

1.Tensor操作 Tensor是PyTorch中最基本的数据结构&#xff0c;类似于NumPy的数组&#xff0c;但可以在GPU上运行加速计算。 示例&#xff1a;创建和操作Tensor import torch# 创建一个零填充的Tensor x torch.zeros(3, 3) print(x)# 加法操作 y torch.ones(3, 3) z x y pr…...

排序——归并排序及排序章节总结

前面的文章中 我们详细介绍了排序的概念&#xff0c;插入排序&#xff0c;交换排序与选择排序&#xff0c;大家可以通过下面的链接再去学习&#xff1a; ​​​​​​排序的概念及插入排序 交换排序 选择排序 这篇文章就详细介绍一下另一种排序算法&#xff1a;归并排序以及…...

python的readline()和readlines()

readlines() readlines() 是 Python 中用于从文件对象中读取所有行的方法。它会一次性读取整个文件内容&#xff0c;并将每一行作为一个字符串存储在一个列表中返回。 使用方法和返回值 使用 readlines() 方法可以读取文件的所有内容&#xff0c;每一行作为列表中的一个元素…...

【ARM】使用JasperGold和Cadence IFV科普

#工作记录# 原本希望使用CCI自带的验证脚本来验证修改过后的address map decoder&#xff0c;但是发现需要使用JasperGold或者Cadence家的IFV的工具&#xff0c;我们公司没有&#xff0c;只能搜搜资料做一下科普了解&#xff0c;希望以后能用到吧。这个虽然跟ARM没啥关系不过在…...

深入探讨极限编程(XP):技术实践与频繁发布的艺术

目录 前言1. 极限编程的核心原则1.1 沟通1.2 简单1.3 反馈1.4 勇气1.5 尊重 2. 关键实践2.1 结对编程2.1.1 提高代码质量2.1.2 促进知识共享2.1.3 增强团队协作 2.2 测试驱动开发&#xff08;TDD&#xff09;2.2.1 提升代码可靠性2.2.2 提高代码可维护性2.2.3 鼓励良好设计 2.3…...

【代码随想录_Day30】1049. 最后一块石头的重量 II 494. 目标和 474.一和零

Day30 OK&#xff0c;今日份的打卡&#xff01;第三十天 以下是今日份的总结最后一块石头的重量 II目标和一和零 以下是今日份的总结 1049 最后一块石头的重量 II 494 目标和 474 一和零 今天的题目难度不低&#xff0c;掌握技巧了就会很简单&#xff0c;尽量还是写一些简洁代…...

【时时三省】tessy 集成测试:小白入门指导手册

目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…...

通过vagrant与VirtualBox 创建虚拟机

1.下载vagrant与VirtualBox【windows版本案例】 1.1 vagrant 下载地址 【按需下载】 https://developer.hashicorp.com/vagrant/install?product_intentvagranthttps://developer.hashicorp.com/vagrant/install?product_intentvagrant 1.2 VirtualBox 下载地址 【按需下载…...

第13章 更多的结构化命令《Linux命令行与Shell脚本编程大全笔记》

13.1 For命令 格式&#xff1a;for var in list;dofor命令默认按照空格、制表符、换行符作为字段分隔符区分单个值&#xff0c;如果某个值含有空格要使用双引号从命令中读取值列表for state in $(cat $file)更改字段分隔符IFS(internal field separator)IFS$\n可能的需求&…...

DeerFlow惊艳案例:AI深度研究助理生成的报告和播客效果实测

DeerFlow惊艳案例&#xff1a;AI深度研究助理生成的报告和播客效果实测 1. 引言&#xff1a;当AI成为你的研究伙伴 想象一下&#xff0c;你正在为一个复杂的市场分析项目焦头烂额&#xff0c;需要快速整理一份包含最新数据、行业趋势和竞争格局的深度报告。传统方式下&#x…...

解密Wallpaper Engine资源宝库:RePKG工具完全实战指南

解密Wallpaper Engine资源宝库&#xff1a;RePKG工具完全实战指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的开源资源处理工具&#xf…...

灵毓秀-牧神-造相Z-Turbo使用全攻略:从环境检查到作品输出

灵毓秀-牧神-造相Z-Turbo使用全攻略&#xff1a;从环境检查到作品输出 1. 镜像简介与核心功能 灵毓秀-牧神-造相Z-Turbo是一款基于Xinference部署的AI文生图模型服务&#xff0c;专门用于生成《牧神记》中灵毓秀角色的高质量图像。该镜像集成了Gradio交互界面&#xff0c;让用…...

Qwen3.5-9B-AWQ-4bit参数调优实战:温度=0.7时中文回答质量与响应速度平衡点

Qwen3.5-9B-AWQ-4bit参数调优实战&#xff1a;温度0.7时中文回答质量与响应速度平衡点 1. 模型概述与参数调优背景 Qwen3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词输出中文分析结果。在实际应用中&#xff0c;我们发现温度参数…...

SEO_新手必看的SEO优化入门教程与常见误区

什么是SEO优化&#xff1f; SEO优化&#xff0c;全称搜索引擎优化&#xff0c;是指通过优化网站内容和结构&#xff0c;使其在搜索引擎&#xff08;如百度、谷歌&#xff09;中获得更高排名的一系列活动。SEO的目的是提高网站的自然流量&#xff0c;从而增加潜在客户和销售机会…...

探索AI辅助开发新范式:让快马平台成为你的专属前端智囊

最近在做一个需要收集用户反馈的小项目&#xff0c;发现用传统的表单方式实在太死板了。正好看到InsCode(快马)平台的AI辅助开发功能&#xff0c;决定试试用AI生成一个交互式反馈墙。没想到整个过程出奇地顺利&#xff0c;这里分享一下我的实践心得。 需求分析阶段 我首先在平…...

【Windows】终止进程、杀掉进程、结束进程

使用资源监视器在任务管理器中点击"性能"选项卡点击"打开资源监视器"切换到"CPU"选项卡在"关联的句柄"搜索框中输入 ui_demo.exe找到对应的进程后&#xff0c;右键点击并选择"结束进程"...

基于PostGIS与SpringBoot构建高性能动态MVT矢量瓦片服务

1. 为什么需要动态矢量瓦片服务 第一次接触矢量瓦片是在2018年做智慧城市项目时&#xff0c;当时前端同事抱怨加载行政区划数据太慢。一个省级行政区划的GeoJSON文件大小超过10MB&#xff0c;每次打开网页都要等半天。后来尝试了Mapbox的矢量瓦片方案&#xff0c;加载速度直接提…...

开箱即用!Qwen-Image-2512-SDNQ Web服务快速体验指南

开箱即用&#xff01;Qwen-Image-2512-SDNQ Web服务快速体验指南 1. 五分钟了解Qwen-Image-2512-SDNQ Web服务 你是否遇到过这样的场景&#xff1a;需要快速生成一张概念图&#xff0c;但打开专业设计软件太麻烦&#xff1f;或者想尝试AI绘画&#xff0c;却被复杂的模型部署步…...

Wan2.2-I2V-A14B部署教程:NVIDIA MPS多进程服务共享GPU资源方案

Wan2.2-I2V-A14B部署教程&#xff1a;NVIDIA MPS多进程服务共享GPU资源方案 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文本生成视频任务优化的私有部署镜像&#xff0c;特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像最大的特点是内置了完整的运行环境和模…...