• 关于extern "C" 的用法


    而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。
    笔者编写的C++引用C函数例子工程中包含的三个文件的源代码如下:
    /* c语言头文件:cExample.h */
    #ifndef C_EXAMPLE_H
    #define C_EXAMPLE_H
    extern int add(int x,int y);     //注:写成extern "C" int add(int , int ); 也可以
    #endif
    /* c语言实现文件:cExample.c */
    #include "cExample.h"
    int add( int x, int y )
    {
     return x + y;
    }
    // c++实现文件,调用add:cppFile.cpp
    extern "C"
    {
     #include "cExample.h"        //注:此处不妥,如果这样编译通不过,换成 extern "C" int add(int , int ); 可以通过
    }
    int main(int argc, char* argv[])
    {
     add(2,3);
     return 0;
    }
      如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" { }。
      其实目的就是告诉编译器,要用c的方式去链接所要引用的函数(不要改变它的名字映射),这样我们就能调用它;如果不声明的话,它就会以c++的形式做映射,这样的话,去obj文件中查找相应函数进度,是没有的。主要是因为c和c++的函数在编译的时候形成的中间函数名字是不一样的,所以我们要在c++中用extern来声明函数,这样的话,就可以调用c中的函数,dll调用一样的。
  • 相关阅读:
    Android Monkey压测命令
    测试常用__linux命令
    适合做自动化的项目
    windows安装MySQL8.0
    视频丢帧(详解)
    selenium 鼠标,键盘操作
    定位元素方法
    关于Python中的lambda
    项目流程
    正则表达式之扩展正则表达式
  • 原文地址:https://www.cnblogs.com/hitwhhw09/p/4732972.html
Copyright © 2020-2023  润新知