C语言 C++相互调用问题
2015-07-29 17:23
465 查看
1. C++调用C语言函数
C语言头文件 c_header.h
C语言实现文件 c_realize.c
C++测试文件cpp_test.cpp
2. C语言调用C++代码
c++头文件 cpp_header.h
C++实现文件 cpp_realize.cpp
C语言测试文件 c_test.c
C语言头文件 c_header.h
#ifndef __C_HEADER_H_ #define __C_HEADER_H_ #ifdef __cplusplus//对于供cpp程序调用的c语言接口,可以在这里使用宏定义及extern,也可以在引用.h文件的cpp文件中使用宏 extern "C" { #endif int c_add(int a, int b); void c_print_data(int x); #ifdef __cplusplus } #endif #endif
C语言实现文件 c_realize.c
#include <stdio.h> #include "c_header.h" int c_add(int a, int b) { return a+b; } void c_print_data(int x) { printf("int c_print_data, x is: %d\n", x); }
C++测试文件cpp_test.cpp
#include <iostream> #include "c_header.h" using namespace std; void main() { int a=23; int b=32; c_add(a, b); c_print_data(a); }
2. C语言调用C++代码
c++头文件 cpp_header.h
#ifndef _CPP_HEADER_H_ #define _CPP_HEADER_H_ int cpp_add(int a, int b); void cpp_print_data(int x); #endif
C++实现文件 cpp_realize.cpp
#include <iostream> #include "c_header.h" using namespace std; #ifdef __cplusplus//对于用于共C语言程序调用的cpp接口,必须在这里定义宏以及extern extern "C" { #endif int cpp_add(int a, int b) { return a+b; } void cpp_print_data(int x) { cout<<"int the cpp_print_data, x is:"<<x<<endl; } #ifdef __cplusplus } #endif
C语言测试文件 c_test.c
#include <stdio.h> #include "cpp_header.h" void main() { int a=4; int b=23; printf("result is: %d\n", cpp_add(a, b)); cpp_print_data(a); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C语言内存对齐实例详解
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法