`

C++调用C

 
阅读更多

    一般地,C++调用C有两种形式(网上资料一般没讲全):

               (1)被调用的C没有头文件

               (2)被调用的C有头文件

    下面一并举例:

 

fun1.c

#include <stdio.h>

void fun1(){
	printf("in fun1()\n");
}

 

fun1.h

#ifdef __cplusplus
	extern "C" {
#endif

void fun1();

#ifdef __cplusplus
	}
#endif

 

fun2.c

#include <stdio.h>
#include <time.h>

#ifdef __cplusplus
	extern "C" {
#endif

void fun2(){
	int cnt=3;

	printf("in fun2()\n");
	srand(time(0));

	while(cnt-->0){
		printf("%d\t",rand()%5);	/*0~4的随机数*/
	}
}

#ifdef __cplusplus
	}
#endif
 

   下面是调用程序 main.cpp

#include <iostream>
#include "fun1.h"
using namespace std;

extern "C" extern void fun2();

int main(){
	fun1();
	fun2();
	return 0;
}

 

   总而言之,

  (1)被调用的代码都要用extern "C" {}括住 ——如果有头文件,只用括住头文件中的函数声明;

  (2)调用带头文件的C只用引入头文件

          调用不带头文件的C需要自己声明函数 extern "C" extern RETURN_TYPE FUN_NAME(PARA);

 

参考文档:
C++调用C函数 http://blog.csdn.net/nataka/article/details/482671
C++调用C函数(带头文件)http://my.oschina.net/jlmpp/blog/10335

 

 

分享到:
评论

相关推荐

    C++调用C函数实例详解

    C++调用C函数实例详解 前言:以前见到extern “C”这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。 首先,为什么要使用extern “C”修饰符? C++调用其它语言的函数,由于编译器生成函数的...

    C++调用c文档

    ### C++调用C与C调用C++:详解`extern "C"`的使用 在混合编程场景下,尤其是在C++程序中调用C代码或反之亦然时,正确理解和使用`extern "C"`是非常重要的。本文将详细介绍`extern "C"`在C++调用C以及C调用C++中的...

    c++调用c的Demo

    本示例“c++调用c的Demo”将展示如何在C++程序中无缝集成C代码,这在需要利用C库或者优化性能时非常有用。Ubuntu 18.04是一个广泛使用的Linux发行版,而CMake则是一种通用的构建系统,它可以帮助我们管理和构建多...

    c语言与c++互相调用示例

    4. 实现C++调用C的逻辑:在C++源文件中调用C函数。 5. 实现C++函数:在C++源文件中定义C++函数,该函数可以被C调用。 6. 在C中调用C++函数:在C源文件中使用`extern "C"`声明C++函数,并调用它。 在实际开发中,...

    C调用REFPROP_refprop_C++调用refprop_调用REFPROP_C++_C调用REFPROP

    首先,要进行C++调用REFPROP,你需要先下载并安装REFPROP的DLL(动态链接库)文件。DLL文件包含了REFPROP的所有功能,可供外部程序调用。确保获取的版本与你的操作系统兼容,并正确安装到系统路径中。 接下来,我们...

    C调用REFPROP,c调用c++函数,C,C++

    标签中的"调用REFPROP C++"再次强调了C++调用REFPROP库的主题,"C调用REFPROP"则意味着同样提供了C语言的调用方式。这通常涉及到使用C语言的函数指针或者C++的extern "C"语法,以确保C++编译器不会对函数进行名字...

    C++调用C文件函数简单应用附件

    在C语言文件(如`duke.c`)中,定义一个可被C++调用的函数。C函数必须遵循C语言的链接约定,这意味着不能使用C++特有的特性,如类、模板、名字修饰等。例如: ```c #ifdef __cplusplus extern "C" { #endif ...

    C++调用C接口的实现示例

    C++调用C代码 一个C语言文件p.c #include void print(int a,int b) { printf(这里调用的是C语言的函数:%d,%d\n,a,b); } 一个头文件p.h #ifndef _P_H #define _P_H void print(int a,int b); #endif C++文件调用C...

    非托管C++调用C#的dll

    C++调用C#编写的dll是一种常见的跨语言调用方式。通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA ...

    C++调用Android函数工程

    本篇将深入探讨如何使用C++调用Android的函数,这主要涉及到JNI(Java Native Interface)技术。JNI是Java平台提供的一种机制,它允许Java代码和其他语言写的代码进行交互,包括C++。下面我们将详细讲解这一过程的...

    c++调用jar包

    标题 "c++调用jar包" 涉及的关键技术是C++程序如何与Java的jar包进行交互。在描述中提到,这是一个C++编写的动态库,它能够调用jar包中的功能,这意味着我们需要利用特定的技术来实现跨语言的通信。这个过程通常通过...

    C++调用C#的DLL程序实现方法

    比如使用C++调用C#的DLL。 SwfDotNet是.net下输出flash的类库。SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都...

    C++调用python,免安装python环境运行

    首先,要实现C++调用Python,通常会用到Python的`Python.h`头文件,它是Python的C API,允许C/C++代码与Python解释器进行交互。但是,这种常规方法要求目标系统已经安装了Python环境。为了解决这个问题,项目可能...

    C++调用PYthon脚本(例程)

    本资源“C++调用Python脚本(例程)”提供了一个完整的工程实例,演示了如何在C++程序中动态地调用Python脚本,使得C++能够利用Python的灵活性和便利性。 在C++中调用Python脚本主要有两种方法:一种是通过Python的...

    C++调用python实例

    首先,C++调用Python主要依赖于Python的C API(Application Programming Interface),它提供了与Python解释器进行交互的接口。要实现这个功能,你需要确保已经安装了Python开发库,包括头文件和库文件,通常在Linux...

    C++与js相互调用

    在IT领域,C++与JavaScript(JS)的交互是一个重要的技术话题,特别是在开发...无论是C++调用JavaScript还是JavaScript调用C++,都需要深入理解两种语言的特性,以及相应的调用机制,才能有效地进行跨语言的代码交互。

    C语言调用C++类中的方法

    首先,为了使C语言能够调用C++的方法,我们需要确保C++类具备"extern 'C'"属性,这使得C++编译器按照C语言的规则进行链接。在C++源文件中,我们可以这样声明: ```cpp extern "C" { // 在这里声明你的C++方法 ...

    C++调用java jar包测试代码

    标题 "C++调用java jar包测试代码" 描述了一个跨语言交互的场景,其中C++程序通过调用Java编译后的jar包来执行特定功能。这个过程涉及到多个技术点,包括Java的编译和打包,C++的编程以及两者之间的接口调用。 1. *...

    C生成静态库给C++调用出现undefined reference to ...解决方案_cpp

    C++兼容C语言,这意味着C++程序可以调用C编写的函数。然而,由于C++支持命名空间和类等特性,因此在C++中调用C代码时需要遵循特定规则: - 使用`extern "C"`:为了让C++编译器知道某些函数是按照C语言的规则进行...

    c++调用C# COM 参数是结构体数组

    C++ 调用 C# COM 参数是结构体数组 C++ 调用 C# COM 参数是结构体数组是一种复杂的编程技术,涉及到多种编程语言和技术。下面我们将对这个主题进行深入探讨。 C# COM 组件 在 C# 中,COM 组件是使用 ComVisible ...

Global site tag (gtag.js) - Google Analytics