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

目录

    • 链接指示extern "C"
      • A.What(概念)
      • [B.Why(extern "C"的作用)](#B.Why(extern "C"的作用))
      • [C.How (如何使用链接指示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")

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

  • 常规使用:

    cpp 复制代码
    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
  • 链接指示与头文件

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

    cpp 复制代码
    // 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


相关推荐
哼?~41 分钟前
C++11标准 上 (万字解析)
开发语言·c++
给大佬递杯卡布奇诺1 小时前
FFmpeg 基本API avformat_alloc_context 函数内部调用流程分析
c++·ffmpeg·音视频
楼田莉子1 小时前
C++学习:C++11扩展:constexpr特性
开发语言·c++·学习
eurotruck1 小时前
c++贪吃蛇V1.0
开发语言·c++·贪吃蛇
Android系统攻城狮2 小时前
C++进阶之操作符重载函数operator[]:用法实例(四百三十五)
开发语言·c++
liulilittle2 小时前
VGW 虚拟路由器ARP剖析
开发语言·c++·编程语言·路由·sd·sdn·vgw
Juan_20123 小时前
P1040题解
c++·算法·动态规划·题解
Onesoft%J1ao3 小时前
C++竞赛递推算法-斐波那契数列常见题型与例题详解
c++·算法·动态规划·递推·信息学奥赛
黄昏晓x3 小时前
C++----多态
java·jvm·c++
。TAT。4 小时前
C++ - List
数据结构·c++·学习