最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C調(diào)用C++代碼的方法步驟

 更新時(shí)間:2021年11月04日 16:12:56   作者:fensnote  
本文主要介紹了C調(diào)用C++代碼的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

有時(shí)C程序里需要用到C++的類,但是C語(yǔ)言又不能直接調(diào)用類,這時(shí)需要把C++的類使用C接口封裝后,再調(diào)用,

可以將封裝后的C++代碼編譯成庫(kù)文件,供C語(yǔ)言調(diào)用;

需要注意的是,封裝的C++代碼庫(kù)文件是用g++編譯的,所以在C中調(diào)用時(shí),需要添加extern "C"{}關(guān)鍵字。

編譯c代碼時(shí),要加上-lstdc++

如下代碼,是c代碼使用C++的map容器的例子:

//test.cpp 封裝C++代碼


#include <map>
#include <iostream>
#include "test.h"

using namespace std;

static map<int, int> m_testMap;


void pushVal(int key, int val)
{
 m_testMap[key] = val;
}


int getVal(int key)
{
 map<int, int>::iterator iter = m_testMap.find(key);
 if (iter != m_testMap.end() )
 {
  return iter->second;
 }

 return  -1;
}

//頭文件 test.h

#ifndef _TEST_H_
#define _TEST_H_

#ifdef __cplusplus
extern "C" {
#endif

void pushVal(int key, int val);
int getVal(int key );


#ifdef __cplusplus
}
#endif

#endif

main函數(shù),調(diào)用封裝的C++接口:

//main.c

#include <stdio.h>
#include "test.h"



int main()
{
 printf("test\n");
 for (int i = 0; i < 10; i++)
 {
  printf("push key: %d, val: %d\n", i, i*10);
  pushVal(i, i*10);
 }
 
 int val = 0;
 for (int i = 0; i < 10; i++)
 {
  val = getVal(i);
  printf("get key: %d, val: %d\n", i,val);
 }
 return 0;
}

編譯的時(shí)候,為了簡(jiǎn)單,我這里沒(méi)有編譯成庫(kù)文件,直接用引用.o編譯的:

makefile:

all: 
 g++ -Wall -c  test.cpp -o test.o
 gcc -Wall -c  main.c -o main.o

 gcc -Wall test.o main.o -o test -lstdc++

clean:
 rm test *.o

編譯運(yùn)行結(jié)果如下:

make
g++ -Wall -c  test.cpp -o test.o
gcc -Wall -c  main.c -o main.o
gcc -Wall test.o main.o -o test -lstdc++

運(yùn)行:

./test
test
push key: 0, val: 0
push key: 1, val: 10
push key: 2, val: 20
push key: 3, val: 30
push key: 4, val: 40
push key: 5, val: 50
push key: 6, val: 60
push key: 7, val: 70
push key: 8, val: 80
push key: 9, val: 90
get key: 0, val: 0
get key: 1, val: 10
get key: 2, val: 20
get key: 3, val: 30
get key: 4, val: 40
get key: 5, val: 50
get key: 6, val: 60
get key: 7, val: 70
get key: 8, val: 80
get key: 9, val: 90

到此這篇關(guān)于C調(diào)用C++代碼的方法步驟的文章就介紹到這了,更多相關(guān)C調(diào)用C++內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

响水县| 东莞市| 自贡市| 富平县| 蓝山县| 丰原市| 苏尼特左旗| 浮山县| 清镇市| 博罗县| 沂南县| 兴隆县| 镇安县| 阳谷县| 灵山县| 融水| 公安县| 读书| 金华市| 玉树县| 嘉禾县| 靖州| 馆陶县| 景德镇市| 和平县| 抚州市| 当涂县| 江阴市| 江山市| 平山县| 香港 | 佛教| 新巴尔虎左旗| 贵南县| 湄潭县| 长岭县| 怀集县| 安达市| 西畴县| 阜城县| 余姚市|