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


相关推荐
tan180°43 分钟前
Linux进程信号处理(26)
linux·c++·vscode·后端·信号处理
一只鱼^_1 小时前
牛客练习赛138(首篇万字题解???)
数据结构·c++·算法·贪心算法·动态规划·广度优先·图搜索算法
李匠20242 小时前
C++GO语言微服务之Dockerfile && docker-compose②
c++·容器
2301_803554522 小时前
c++和c的不同
java·c语言·c++
Darkwanderor2 小时前
c++STL-通用(反向)迭代器适配器
c++
Magnum Lehar2 小时前
3d游戏引擎的Utilities模块实现
c++·算法·游戏引擎
青瓦梦滋3 小时前
【语法】C++的多态
开发语言·c++
Darkwanderor6 小时前
一般枚举题目合集
c++·算法
源远流长jerry6 小时前
右值引用和移动语义
c++
吃个糖糖7 小时前
MFC 调用海康相机进行软触发
c++·数码相机·mfc