C和C++的相互调用.doc
上传人:yy****24 上传时间:2024-09-09 格式:DOC 页数:3 大小:40KB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

C和C++的相互调用.doc

C和C++的相互调用.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CC++相互调用在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题。近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要的是,单独编译C++的时候,完全没有问题,但当用主程序的C调用C++的功能函数时,总是提示该函数未定义(undefined),这里分析问题的出处便是混合调用出现的问题了。C调用C++/****example.h//C和CPP实现都包含此头文件********/#ifndef_EXAMPLE_H_#define_EXAMPLE_H_#ifdef__cplusplusextern"C"{#endifvoidcpp_fun();#ifdef__cplusplus}#endif#endif/*******.cpp**********/#include”example.h”voidcpp_fun(){dosomething;}/*******.c**********/#include“example.h”intmain(){cpp_fun();}C++调用C/****example.h//C和CPP实现都包含此头文件********/#ifndef_EXAMPLE_H_#define_EXAMPLE_H_#ifdef__cplusplusextern"C"{#endifvoidc_fun();#ifdef__cplusplus}#endif#endif/*******.cpp**********/#include”example.h”intmain(){c_fun();}/*******.c**********/#include“example.h”voidc_fun(){dosomething();}C++调用C的另外一种情况:c的头文件无法像上面的example.h一样,含有如下#ifdef__cplusplusextern"C"{#endif#ifdef__cplusplus}#endif这六行代码,这时候需要在C++实现文件中用extern“C”包含该头文件。如下所示:/*********.cpp实现文件**********/extern“C”{#include“example.h”}……综上C++调用C有两种情况。值得注意得是.c实现文件中不能含有extern“C”,这会导致编译错误。但头文件.h显然是cpp和c通用的,故头文件不受此限制。