首页 > 编程语言 > 详细

C和C++混合编译问题

时间:2014-03-16 22:39:54      阅读:520      评论:0      收藏:0      [点我收藏+]

在C语言中,编译器对于函数 int test()和int test(int a)的编译结果得到的函数名是一样的,所以C语言不能重载

而在C++中int test()和int test(int a)编译后生成不同名字的函数,所以支持重载

 

1.这就产生了问题,如果在C++中调用C语言的int test(int a)函数,会连接错误,因为编译后找不到对应名称的函数(c和cpp生成的函数名不同)

所以需要在CPP文件中如果要使用int test(int a)函数,需要在(include下面)用extern "C" int test(int a)

如果调用的C函数特别多,也可以用下面的方式声明

extern "C"

{

需要调用的c语言函数

int test(int a);

}

 

或者

extern "C"

{

 #include "XXX.h"

这样会把XXX.h里面声明的函数都变成C函数生成规则

}

 

 

2.如果要在.c文件中需要调用CPP函数需要在.cpp文件中用extern "C"{

cpp函数的实现

}

然后系统在编译这个函数的时候就会自动按照C语言的规则进行编译

C和C++混合编译问题,布布扣,bubuko.com

C和C++混合编译问题

原文:http://www.cnblogs.com/xyzaijing/p/3603680.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!