1 / 3
文档名称:

C++调用C函数的方法.docx

格式:docx   大小:10KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C++调用C函数的方法.docx

上传人:飞行的猛子 2022/2/11 文件大小:10 KB

下载得到文件列表

C++调用C函数的方法.docx

相关文档

文档介绍

文档介绍:C++调用 C函数的方法
C++调用 C 函数的方法
首先,为什么要使用 extern"C" 修饰符?
:errorLNK2019: 无法解析的外部符号
"v
C++调用 C函数的方法
C++调用 C 函数的方法
首先,为什么要使用 extern"C" 修饰符?
:errorLNK2019: 无法解析的外部符号
"void__cdeclDeleteStack(struct_Node*)"(?DeleteStack@***@YAXPAU
_Node@@***@Z),该符号在函数 _main 中被引用。
然后是如何使用?
应该怎么使用该语句呢?
刚开始,我简单地在 C++源文件的前面使用该语句声明,但是还是出错,而且是在编译阶段就报错。
errorC2732: 链接规范与“ DeleteStack ”的早期规范冲突。
为什么会出现这个错误呢?因为 C++源文件已经引入了 C的头文件,在头文件里,声明该函数时没有 extern 修饰,而这里有 extern 修饰,所以冲突了。解决的办法有两个。
一。在 C头文件中加上 extern 修饰符。
直接加,也不行。因为 C 源文件也包含了这个头文件,当编译 C
源文件时,就会出现错误。所以,需要一种机制来区分是编译 C还
是 C++文件。方法如下:
#ifdef__cplusplus extern"C"
#endif
voidDeleteStack(Stackstack);
因为在编译 C++文件时,自动定义预处理器名字 __cplusplus ,而编译 C时,没有该处理器名字。所以只有编译 C++时,才有符号
extern “C”。
此外,链接指示 extern"C" 有单个和复合两种形式。以上为单个形式,复合形式可以同时将几个函数声明为 extern"C"
extern"C"{
voidDeleteStack(Stackstack);
voidPrintStack(Stackstack);