自己做图片的网站,网站域名到期,南通网站的优化,网站维护服务基本内容C代码调用C函数#xff1a;
在C中引用C语言中的函数和变量#xff0c;在包含C语言头文件#xff08;假设为cExample.h#xff09;时#xff0c;需进行下列处理#xff1a; extern C { #include cExample.h } …C代码调用C函数
在C中引用C语言中的函数和变量在包含C语言头文件假设为cExample.h时需进行下列处理 extern C { #include cExample.h } 而在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); #endif //C函数实现文件 cExample.c #include cExample.h int add( int x, int y ) { return x y; } // c实现文件调用addcppFile.cpp extern C { #include cExample.h } int main(int argc, char* argv[]) { add(2,3); return 0; } 如果C调用一个C语言编写的.DLL时当包括.DLL的头文件或声明接口函数时应加extern C { }
C代码调用C函数 在C中引用C语言中的函数和变量时C的头文件需添加extern C但是在C语言中不能直接引用声明了extern C的该头文件应该仅在C文件中将C中定义的extern C函数声明为extern类型。 笔者编写的C引用C函数例子工程中包含的三个文件的源代码如下 //C头文件 cppExample.h #ifndef CPP_EXAMPLE_H #define CPP_EXAMPLE_H extern C int add( int x, int y ); #endif //C实现文件 cppExample.cpp #include cppExample.h int add( int x, int y ) { return x y; } //C文件 main.c extern int add( int x, int y ); int main( int argc, char* argv[] ) { add( 2, 3 ); return 0; }
总结
在C中调用C代码要在C文件中加入extern C {}去告诉我们的编译器该段代码使用C的方式调用。因为这些代码是在.c文件中编写它们是被编译成C的形式所以需要使用C的调用方式。
在C中调用C代码则要在C文件中加入extern C告诉编译器把字段代码编译成C的形式以便我们在.c文件中直接调用。
extern C {}经常在头文件里结合 __cplusplus 一起使用例如
#define PR_BEGIN_EXTERN_C extern C“ {
#define PR_END_EXTERN_C } #ifdef __cplusplus
PR_BEGIN_EXTERN_C
#endif
extern void function(int a);
#ifdef __cplusplus PR_END_EXTERN_C #end
对于C文件 __cplusplus 会被定义这样在C文件中包含该头文件就会自动加入 extern C {}
而对于C文件是没有 __cplusplus 的所以在C文件中包含该头文件就不会加入 extern C {}
参考文章
https://blog.csdn.net/guoxiaoqian8028/article/details/26174443?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.controlspm1001.2101.3001.4242