首页 > 代码库 > C C++相互调用实例
C C++相互调用实例
一 C调用C++
1. 代码组织
2. test.h
/************************************************************************* > File Name: test.h > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 04:18:38 PM WST ************************************************************************/ #ifndef TEST_H #define TEST_H class CTest { private: int a, b; public: CTest(int, int); int Add(); }; #endif
3. test.cpp
/************************************************************************* > File Name: test.cpp > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 04:37:29 PM WST ************************************************************************/ #include "test.h" CTest::CTest(int m, int n) { this->a = m; this->b = n; } int CTest::Add() { return this->a + this->b; } extern "C" { // compile according C int CAdd(int a, int b) { CTest test(a, b); return test.Add(); } }4. main.c
/************************************************************************* > File Name: test.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 04:23:11 PM WST ************************************************************************/ #include <stdio.h> extern int CAdd(int a, int b); int main() { int n = CAdd(2, 6); printf("%d\n", n); return 0; }
5. Makefile
CC=gcc all: $(CC) -g -o main main.c test.cpp
6. 测试
二 C++调C
1. 代码组织
2. test.h
/************************************************************************* > File Name: test.h > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 05:21:48 PM WST ************************************************************************/ #ifndef TEST_H #define TEST_H #ifdef _cplusplus extern "C" { #endif int add(int, int); // C implement #ifdef _cplusplus } #endif #endif
3. test.c
/************************************************************************* > File Name: test.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 05:24:26 PM WST ************************************************************************/ #include <stdio.h> #include "test.h" int add(int a, int b) { return a + b; }
4. main.cpp
/************************************************************************* > File Name: main.cpp > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 11 Nov 2014 05:25:24 PM WST ************************************************************************/ #include <iostream> #include "test.h" using namespace std; int main() { int n = add(2, 6); cout << n << endl; return 0; }
5. Makefile
CC=g++ all: $(CC) -g -o main main.cpp test.c test.h
6. 测试
C C++相互调用实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。