C++调用C函数的方法

C++调用C函数的方法

我们以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。今天继续和一起学习C++调用C函数的方法吧!

C++调用C函数的`方法

首先,为什么要使用extern "C"修饰符?

C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用。调用C语言的函数,需要在函数声明的地方语句extern "C"。如果不使用该语句,在链接的时候,编译器就会报以下这种错误。

Test.obj : error LNK2019: 无法解析的外部符号 "void __cdecl DeleteStack(struct _Node *)" (?DeleteStack@@YAXPAU_Node@@@Z),该符号在函数 _main 中被引用。

然后是如何使用?

应该怎么使用该语句呢?

刚开始,我简单地在C++源文件的前面使用该语句声明,但是还是出错,而且是在编译阶段就报错。

error C2732: 链接规范与“DeleteStack”的早期规范冲突。

为什么会出现这个错误呢?因为C++源文件已经引入了C的头文件,在头文件里,声明该函数时没有extern修饰,而这里有extern修饰,所以冲突了。解决的办法有两个。

一。在C头文件中加上extern修饰符。

直接加,也不行。因为C源文件也包含了这个头文件,当编译C源文件时,就会出现错误。所以,需要一种机制来区分是编译C还是C++文件。方法如下:

#ifdef __cplusplus

extern "C"

#endif

void DeleteStack(Stack stack);

因为在编译C++文件时,自动定义预处理器名字__cplusplus,而编译C时,没有该处理器名字。所以只有编译C++时,才有符号extern “C”。

此外,链接指示extern "C"有单个和复合两种形式。以上为单个形式,复合形式可以同时将几个函数声明为extern "C"

extern "C" {

void DeleteStack(Stack stack);

void PrintStack(Stack stack);

void Pop(Stack stack);

}

加上预处理器名字如下:

#ifdef __cplusplus

extern "C" {

#endif

void DeleteStack(Stack stack);

void PrintStack(Stack stack);

void Pop(Stack stack);

#ifdef __cplusplus

}

#endif

  二。编写一个C++风格的头文件,在这里添加extern修饰符。

使用方法一,很简单。但是如果该头文件是别人写好,你无法修改。这个时候就要使用其它方法了。方法是定义C++自己的头文件,文件名为"CStack.h"

// CStack.h

extern "C" {

#include "Stack.h";

}

C++调用C函数的方法

转载请注明出处天天好学网 » C++调用C函数的方法

学习

维生素有什么服用禁忌

阅读(82)

本文为您介绍维生素有什么服用禁忌,内容包括维生素之间的配伍禁忌,维生素c禁忌注意事项,服用维生素e的禁忌事项。维生素是人和动物为维持正常的生理功能而必须从食物中获得的一类微量有机物质,在人体生长、代谢、发育过程中发挥着重要的

学习

自制珍珠粉美白面膜的做法

阅读(54)

本文为您介绍自制珍珠粉美白面膜的做法,内容包括珍珠粉面膜怎么做祛斑美白最好,珍珠粉自制面膜的做法,珍珠粉做面膜真的可以美白吗。导语:现在越来越多的人将珍珠粉用于美容事业里,它对肌肤的美白有着显著的效果,很受年轻人欢迎。下面就为

学习

谷雨朋友圈创意文案大全

阅读(72)

本文为您介绍谷雨朋友圈创意文案大全,内容包括谷雨唯美句子朋友圈文案,谷雨朋友圈文案问候语简短句子。谷雨朋友圈创意文案大全160句对二十四节气稍有了解的人都知道,每年4月20日或21日太阳达到30°时,就是谷雨节气了。今天在这给大家整理

学习

植树节简单押韵的句子()

阅读(60)

本文为您介绍植树节简单押韵的句子(),内容包括植树节的优美句子10个字,植树节名言100句带作者。植树节简单押韵的句子(110句)说起植树节,有些人可能会有点陌生,但这个节日属于我们国家的现代节日,很有教育意义。今天在这给大家整理了一些植树节

学习

阮郎归赏析

阅读(56)

本文为您介绍阮郎归赏析,内容包括阮郎归赏析答案,阮郎归赏析秦观,阮郎归赏析上片。在学习、工作、生活中,许多人对一些广为流传的古诗都不陌生吧,古诗是古代中国诗歌的泛称,在时间上指1840年鸦片战争以前中国的'诗歌作品。那么你有真正了解

学习

探究湿热对维C银翘片中维生素C含量的影响

阅读(55)

本文为您介绍探究湿热对维C银翘片中维生素C含量的影响,内容包括维c银翘片是治疗眼睛湿热吗,维c银翘片肿瘤患者可以吃吗,维c银翘片中富含维生素c吗。导语:维生素C是高等灵长类动物与其他少数生物的必需营养素。抗坏血酸在大多的生物体可借

学习

荷叶荷花文案合集

阅读(44)

本文为您介绍荷叶荷花文案合集,内容包括荷叶文案短句干净治愈,荷叶荷花的唯美文案,荷叶荷花文案怎么写。在学习、工作、生活中,大家肯定对各类文案都很熟悉吧,文案用于分享自己的生活状态。那什么样的文案才是经典的呢?以下是整理的荷叶荷

学习

不治已病治未病作文

阅读(79)

本文为您介绍不治已病治未病作文,内容包括从治未病想到的申论作文,治未病作文范文,关于治未病有感而发的作文。在平平淡淡的学习、工作、生活中,大家或多或少都会接触过作文吧,作文根据体裁的不同可以分为记叙文、说明文、应用文、议论文

学习

怀念母亲教学反思(精选)

阅读(66)

本文为您介绍怀念母亲教学反思(精选),内容包括怀念母亲教学反思,六年级人教版怀念母亲教学反思。身为一名到岗不久的老师,我们的工作之一就是课堂教学,通过教学反思能很快的发现自己的讲课缺点,如何把教学反思做到重点突出呢?下面是记得网的为

学习

3月你好的正能量说说最新

阅读(68)

本文为您介绍3月你好的正能量说说最新,内容包括3月你好发朋友圈正能量的句子,3月再见4月你好正能量的句子。3月你好的正能量说说最新130句亲爱的朋友们,三月就要到了,三月是一个美丽的月份,让我们跟三月道声“你好”吧!今天在这给大家整理了

学习

噪声的危害和控制【优秀】

阅读(63)

本文为您介绍噪声的危害和控制【优秀】,内容包括噪声的危害和控制的重要笔记,噪音的危害与控制的演讲稿。噪声的危害和控制01-23下面是记得网整理的8篇《噪声的危害和控制》,希望能对您的写作有一定的参考作用。噪声的危害和控制篇一教学

学习

幼儿大班下学期安全教育随笔范文

阅读(78)

本文为您介绍幼儿大班下学期安全教育随笔范文,内容包括小学安全教育随笔记录,幼儿园安全随笔小班。幼儿大班下学期安全教育随笔范文安全教育在幼儿园教育中占据很多的比重,幼儿园老师应该多留心和重视的。那么大班安全教育活动随笔会写

学习

《牛顿第一定律》说课稿(优秀)

阅读(65)

本文为您介绍《牛顿第一定律》说课稿(优秀),内容包括牛顿第二定律说课稿,牛顿第一定律说课稿8篇。作为一名人民教师,常常需要准备说课稿,说课稿有助于顺利而有效地开展教学活动。写说课稿需要注意哪些格式呢?以下内容是记得网为您带来的7篇《

学习

二年级上册数学教案(优秀)

阅读(66)

本文为您介绍二年级上册数学教案(优秀),内容包括二年级数学优秀教案50篇,数学广角搭配二年级上册教案。作为一名无私奉献的老师,常常要写一份优秀的教案,编写教案有利于我们准确把握教材的重点与难点,进而选择恰当的教学方法。那么优秀的教案

学习

新学期致自己的一封信500字(精选)

阅读(107)

本文为您介绍新学期致自己的一封信500字(精选),内容包括新学期的一封信500字,小学生新学期致自己的一封信600字。新学期致自己的一封信500字新的学期,新的开始,良好的开始是成功的一半。下面是为大家收集的新学期致自己的一封信500字(精选16

学习

充实自己的说说

阅读(69)

本文为您介绍充实自己的说说,内容包括充实自己的说说简短,充实的一天心情说说。充实自己的说说随着社交网络的兴起,越来越多人热衷于在社交平台上发布说说,用以记录和分享生活日常。什么样的说说才具有感染力呢?下面是整理的充实自己的说说

学习

自己的优点和缺点

阅读(62)

本文为您介绍自己的优点和缺点,内容包括自己的优点和缺点总结,自己的优点和缺点面试,自己的优点和缺点怎么写。自己的优点和缺点1优点:节制、聪明、有不靠脸吃饭的实力

学习

关于介绍自己的小学作文

阅读(66)

本文为您介绍关于介绍自己的小学作文,内容包括介绍自己小学生作文,介绍自己的作文300字。关于介绍自己的小学作文在日复一日的学习、工作或生活中,许多人都有过写作文的经历,对作文都不陌生吧,作文根据体裁的不同可以分为记叙文、说明文、

学习

介绍自己的小学作文

阅读(78)

本文为您介绍介绍自己的小学作文,内容包括介绍自己的小学作文400字,介绍自己的小学作文一篇。介绍自己的小学作文在平凡的学习、工作、生活中,大家都跟作文打过交道吧,借助作文人们可以实现文化交流的目的。为了让您在写作文时更加简单方

学习

送给自己的生日快乐祝福语

阅读(66)

本文为您介绍送给自己的生日快乐祝福语,内容包括送给自己的生日快乐祝福语大全,祝自己生日快乐的祝福语文案。送给自己的生日快乐祝福语无论是在学校还是在社会中,要用到祝福语的地方还是很多的,祝福语是指对人们的美好祝福的语句。相信写

学习

你好2035写给未来自己的一封信(精选)

阅读(71)

本文为您介绍你好2035写给未来自己的一封信(精选),内容包括你好2035写给未来自己的一封信,写给2035的我的一封信作文400字。你好2035写给未来自己的一封信如果你给2035年的你写一封信,你会如何写呢?你又是如何畅想2035年的世界是什么样子的

学习

给未来的自己的一封信(精选)

阅读(57)

本文为您介绍给未来的自己的一封信(精选),内容包括给未来的自己的一封信400字,写给未来的自己的一封信小学生。给未来的自己的一封信书信的分类书信分为一般书信和专用书信两大类。一般书信主要有家庭成员之间的家书类书信,朋友和同事之间