extern c

简介:
C++程序有时候需要调用其他程序设计语言编写的函数,最常见的语言是C语言。像任何名字一样,必须声明其他语言编写的函数
名字,该声明必须指定返回类型和参数表。编译器按处理普通c++函数一样的方式检查对外部语言函数的调用,但是,编译器一般
 
必须产生不同的代码来调用其他语言编写的函数。c++链接指示(linkage directive)指出任意非c++函数所用的语言。
 
1.声明非C++函数
 
链接指示有两种形式,单个的或复合的
 
extern "C" size_t strlen(const char*)
 
extern"C" {
 
  int strcmp(const char*, const char*);
 
  char* strcat(char*, const char*);
 
}
 
2, 链接指示与头文件
 
可以将多重声明形式应用于整个头文件
 
extern “C" {
 
     // 链接指示可以嵌套,头文件中即使有链接指示也不会受影响
 
  #include <string.h>
 
}
 
3. 导出c++函数到其他语言
 
//通过链接指示,使得其他语言编写的程序可以使用c++函数
//用链接指示定义的函数的每个声明都必须用相同的链接指示
extern "C" double calc(double dparam);
4. 支持链接指示的语言
exter "Ada"  extern "FORTRAN" 支持什么语言随编译器而变。
 
对链接到C的预处理支持
    #ifdef __cplusplus
    extern "C" 
    #endif
    it strcmp(const char*, const char*);
 
5, 重载函数与链接指示
   重载函数依赖于目标语言,C语言不支持重载函数。
   extern "C" calc(double);
   extern SmallInt calc(const SmallInt&);
   extern BigNum calc(const bigNum&);
6, extern "C" 函数的指针
   // pf points to a C function returning void taking an int
   extern "C" void (* pf) (int);
   C函数指针与C++函数的指针具有不同的类型,不能将C函数的指针初始化或赋值为C++函数指针
   反之亦然。
 
7,用与整个声明的链接指示
   使用链接指示的时候,它应用于函数和任何函数指针,作为返回类型或参数类型使用。
   // f1 is a C function, accepting a pointer to a C function.
   extern "C" void f1(void (*)(int));


本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/5136781.html,如需转载请自行联系原作者
相关文章
|
3月前
|
存储 编译器 C语言
详解C/C++中的static和extern
本文详解了C/C++中`static`和`extern`关键字的用法和区别,通过具体代码示例说明了在不同情境下如何正确使用这两个关键字,以及`extern "C"`在C++中用于兼容C语言库的特殊作用。
109 4
详解C/C++中的static和extern
|
6月前
|
C语言
【C语言】:static和extern的详细介绍和使用
【C语言】:static和extern的详细介绍和使用
63 1
|
7月前
|
存储 C语言
static和extern
`static`和`extern`是C语言的关键字。`static`用于修饰局部变量、全局变量和函数,改变它们的生命周期和作用域。局部静态变量在函数结束后不会销毁,保持其值直到程序结束。全局静态变量限制为只在当前源文件可见,减少命名冲突。`extern`则用于声明外部已定义的符号,使得在其他文件中可以访问该全局变量或函数。总的来说,`static`和`extern`影响变量和函数的可见性和存储持续时间。
44 0
|
7月前
|
存储 C语言
static和extern详解
static和extern详解
63 0
|
存储 编译器 C语言
C语言关键字之extern和static
C语言关键字之extern和static
102 0
|
存储 数据库 开发者
extern,const,#define
extern,const,#define
80 0
|
编译器
#ifdef _cplusplus extern “C“ 含义及应用
#ifdef _cplusplus extern “C“ 含义及应用
136 0
|
C#
都是用 DllImport?有没有考虑过自己写一个 extern 方法?
原文 都是用 DllImport?有没有考虑过自己写一个 extern 方法? 你做 .NET 开发的时候,一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的。
951 0

热门文章

最新文章