龙空技术网

C++:extern "C"

零壹问道 339

前言:

现时大家对“c语言可以分为几大类”大概比较关注,大家都需要剖析一些“c语言可以分为几大类”的相关资讯。那么小编也在网络上网罗了一些有关“c语言可以分为几大类””的相关知识,希望看官们能喜欢,我们一起来学习一下吧!

"extern C"通常用于C++程序与C程序交互的情况,主要有以下两个场景:

C++程序调用C语言的函数库

C++程序如果要使用C语言的函数库,需要将函数库中的函数声明为C语言风格,即使用extern "C"关键字修饰,以达到链接标准C语言函数库的目的。例如:

extern "C" {    int printf(const char *format, ...);}
C语言程序调用C++程序的函数

当C语言调用C++程序中的函数时,需要将C++函数声明为C语言风格的函数,以便C语言能够调用,通常使用 extern "C" 修饰C++函数声明。举例如下:

C++ 程序:

#ifdef __cplusplusextern "C" {      //告诉编译器按照 C 风格编译,避免 C++ 函数名被重命名#endifint Sum(int a, int b);      #ifdef __cplusplus}#endif

C语言程序:

// 假设 Sum 函数在 cpp_lib.dll 库中void* handle = dlopen("cpp_lib.dll", RTLD_LAZY);int (*Sum)(int, int) = (int(*)(int, int)) dlsym(handle, "Sum");if(Sum == NULL){    printf("unable to load Sum from cpp_lib.dll.\n");    return 1;}int res = Sum(1,2);printf("res=%d\n", res);dlclose(handle);

注:这里的 dlopen,dlsym, dlclose 等函数是 Linux 下的动态链接库调用函数。类 Windows 下有相应的函数。

标签: #c语言可以分为几大类 #c语言源文件cpp怎么变c #c语言引用是什么意思啊 #c语言windows函数库下载 #易语言调用c