前言:
现时大家对“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