zoukankan      html  css  js  c++  java
  • [转]extern "C"的作用

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

      加上extern “C”后,会指示编译器将这部分代码按C语言进行编译,而不是C++的。这是因为C++支持函数重载,因此,编译器在编译函数的过程中会将函数参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

      extern "C"包含两层含义:

      1. extern关键字告诉编译器其声明的函数和变量可以在本模块或其他模块中使用。

        在模块的头文件中对本模块提供给其他模块引用的函数和全局变量以关键字extern生命。与extern对应的是static,static表明变量或函数只能在本模块中使用,因此,被static修饰的变量或函数是不可能被extern “C”修饰的。

      2. “C”表示编译器在编译时会按照C编译器的方式进行编译。

      

      extern "C"使用要点:

      1. 可以是单一语句 

    extern "C" double sqrt(double);

      2. 可以是复合语句,这相当于复合语句中的声明都加上了extern “C”

    extern "C"
    {
          double sqrt(double);
          int min(int, int);
    }

      3. 可以包含头文件,相当于头文件中的声明都加上了extern “C”

    extern "C"
    {
        #i nclude <cmath>
    }

      4. 不可以将extern “C”添加在函数内部

      5. 如果函数有多个声明,可以都加extern “C”,也可以只出现在第一次的声明中,后面的声明会接受第一个链接指示符的规则。

      6. 除了extern “C”,还有extern “FORTRAN”等。

      参考:https://www.cnblogs.com/carsonzhu/p/5272271.html

  • 相关阅读:
    CORS跨域解决方案
    修改数据库排序规则实践总结
    【转】通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
    调用远程数据库的T-SQL和SP(SQLSERVER)
    解决在微信网页中百度地图定位不准确的问题
    VUE小知识点
    实现鼠标移过时,显示图片的功能
    实现导出功能
    两数据库表之间迁移插入数据
    IIS配置FTP
  • 原文地址:https://www.cnblogs.com/YQ2014/p/9799407.html
Copyright © 2011-2022 走看看