C和C++中如何互相调用

原创 2007年09月12日 12:36:00
因为历史上是先有C后有C++,所以C++中调用C中的函数加个extern "C" 既可.
假如C的文件为c.c和c.h,C中有C_fun()函数
C++的文件为cpp.cpp和cpp.h
-----------------------------------------------------------------------------
c.h的实现
#ifndef _c_h_
#define _c_h_
#ifdef __cplusplus
extern "C" {
#endif
 
void C_fun();
 
#ifdef __cplusplus
}
#endif
 
 
#endif
-----------------------------------
c.c的实现
#include "c.h"
void C_fun()
{
}
------------------------------------
在擦cpp.cpp中调用c.c中的C_test()
cpp.cpp的实现
#include "c.h"
int main()
{
    C_fun()
}
其中__cplusplus是C++编译器的保留宏定义.就是说C++编译器认为这个宏已经定义了.
所以关键是extern "C" {}
extern "C"是告诉C++编译器件括号里的东东是按照C的obj文件格式编译的,要连接的话按照C的命名规则去找.
================================
那么C中是如何调用C++中的函数cpp_fun()呢?
因为现有C后有C++, 所以只能从C++的代码中考虑了.
加入C++中的函数或变量有可能被C中的文件掉用,则应该这样写,也是用extern "C"{}
不过是代码中要加,头文件也要加,因为可能是C++中也调用
--------------------------------------
cpp.h的实现
#ifndef _c_h_
#define _c_h_
#ifdef __cplusplus
extern "C" {
#endif
 
void CPP_fun();
 
#ifdef __cplusplus
}
#endif
 
 
#endif
.-----------------------------------------------
Cpp.cpp的实现
extern "C" {   //告诉C+++编译器,扩号里按照C的命名规则编译
void CPP_fun()
{
    .....
}
}

C语言 C++相互调用问题

1. C++调用C语言函数 C语言头文件  c_header.h #ifndef __C_HEADER_H_ #define __C_HEADER_H_ #ifdef __cplusplus ext...
  • jisuanji_wjfioj
  • jisuanji_wjfioj
  • 2015年07月29日 17:23
  • 468

c++和c语言中的函数相互调用的问题

1、如何C++程序要调用 已编译后的C函数,该怎么办?
  • wuli2496
  • wuli2496
  • 2014年11月01日 13:12
  • 1087

Python实例浅谈之三Python与C/C++相互调用

转自 : http://blog.csdn.net/taiyang1987912/article/details/44779719 一、问题       Python模...
  • xiaoxianerqq
  • xiaoxianerqq
  • 2016年08月18日 16:02
  • 615

NDK基础(java ,c/c++, jni之间的关系及java和c/c++之间的相互调用)

1.java,c/c++,和jni之间的关系 java和c/c++可以相互调用,是因为java虚拟机中的JNI。简单的说就是用c/c++编写一个动态链接库让Java虚拟机去调用。(在windows...
  • lishihaojie
  • lishihaojie
  • 2015年05月28日 09:27
  • 915

C/C++与汇编的函数相互调用分析

转自:http://blog.sina.com.cn/s/blog_4ae178ba01012d3o.html C/C++与汇编的函数相互调用分析 write by 九天雁翎(JTian...
  • woshiyuanlei
  • woshiyuanlei
  • 2017年01月22日 15:01
  • 1266

C++ 和 C 互相调用

以前曾经总结过一篇(http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html),关于在C中如何调用C++的代码,当时并未做完全的展...
  • panfengsoftware
  • panfengsoftware
  • 2013年03月08日 12:36
  • 353

c/c++互相调用

在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题。近来在主程序是C语言,而调用C++功能...
  • haohaojian
  • haohaojian
  • 2014年07月13日 08:57
  • 289

C与C++互相调用

1.引言   C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过...
  • sunnytina
  • sunnytina
  • 2015年12月18日 18:02
  • 342

C和C++之间so库的互相调用

昨晚有个朋友问我关于在C中调用C++库的问题,今天午饭后,由于脖子痛的厉害而没有加入到我们组的“每天一战”的行列中去,所以正好将C和C++之间的库调用关系做个总结。 1.extern "C"的理...
  • superbfly
  • superbfly
  • 2015年02月11日 20:52
  • 6641

C++ 与 c# 模块 之间相互调用

在项目中,遇到C++ 与 c#编写的模块之间的相互调用。 分两种情况: 1  c#模块使用C++模块的DLL(导出C API函数), 只需简单引用C++模块的 DLL即可。 2 c+...
  • zhaozhencn
  • zhaozhencn
  • 2015年08月22日 12:31
  • 1138
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C和C++中如何互相调用
举报原因:
原因补充:

(最多只允许输入30个字)