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

C程序和C++程序之間的互相調(diào)用圖文教程

 更新時間:2023年07月21日 16:03:03   作者:林?子  
這篇文章主要給大家介紹了關(guān)于C程序和C++程序之間互相調(diào)用的相關(guān)資料,我們平常在刷題的時候,難免遇到實(shí)現(xiàn)多組輸入這樣的問題,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

我們都知道C和C++是兩種語言,C++兼容C。但是有時候我們用C++寫了一個程序,想使用C文件里的函數(shù)?;蛘呶覀冇肅語言寫了一個程序,想調(diào)用C++程序里的函數(shù)。會發(fā)現(xiàn)兩者不能互相調(diào)用,其實(shí)是可以的,這篇文章將會為你揭曉。

一、C++調(diào)用C

首先,我們先我們要有2個項(xiàng)目,一個項(xiàng)目以C++程序編譯,要調(diào)用的項(xiàng)目則是以C程序編譯的。

C++項(xiàng)目:

C程序項(xiàng)目:

需要頭文件,頭文件是提供給主程序包含的。

因?yàn)槭荂++調(diào)用C,而一個程序只有一個main函數(shù),所以C項(xiàng)目里是沒有main函數(shù)的。

生成靜態(tài)庫

然后,我們需要把C項(xiàng)目生成靜態(tài)庫。

點(diǎn)擊確定,然后編譯。

這個lib文件就是Print項(xiàng)目的靜態(tài)庫

包含頭文件

然后我們把生成的.lib文件和C程序的.h文件移到 C++程序下。

然后包含頭文件

添加依賴庫

把C程序生成的 .lib靜態(tài)庫添加進(jìn)去

extern

然后我們需要用extern 來修飾這個頭文件。

extern "C" //用C語言的方式編譯括號內(nèi)容
{
#include "Print.h"
}
int main()
{
	Print();
	return  0;
}

然后我們運(yùn)行程序

這樣,就成功的使用 CPP程序調(diào)用C程序的內(nèi)容了

二、C調(diào)用C++

C調(diào)用和C++ , 和C++調(diào)用C,其實(shí)差不多。

我們把要調(diào)用的程序 改成C++程序

然后把主程序改成C程序

但此時問題了,C 語言里 沒有 extern "C"這個用法,這種用法放在C程序里會出錯,所以我們把它刪掉。

#define _CRT_SECURE_NO_WARNINGS 1
#include "Print.h"
int main()
{
	Print();
	return  0;
}

然后 打印的內(nèi)容改成 is C++

因?yàn)镃PP程序和C語言程序?qū)瘮?shù)名的修飾不同,所以我們要用extern 來修飾C++程序里需要調(diào)用的函數(shù),

但此時問題又來了,.h的頭文件會在預(yù)處理的時候展開,但是C語言不認(rèn)識 extern “C”,所以我們可以這樣。

#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
void Print();
#ifdef __cplusplus
}
#endif

__cplusplus 是一個宏定義,只要在以C++程序編譯時,才會有。如果不是以C++程序編譯,那么就不會 展開 extern “C”。

然后我們就可以編譯了,生成的是C++程序的靜態(tài)庫

再把C++的靜態(tài)庫和Print.h 文件 移動到C程序目錄

主程序里也別忘了添加依賴庫

這樣我們就成功用 C程序調(diào)用了C++程序里的函數(shù)

總結(jié)

無論是C++調(diào)用C里面的函數(shù),還是C調(diào)用C++里的函數(shù)。本質(zhì)都是一樣的,唯一需要注意的是 C語言里面 沒有 extern “C” 這種用法。所以C++程序里需要保證,在以C++編譯時,變換成以C的方式編譯,也就是使用extern “C”。但同時,還需要避免當(dāng) .h文件在C文件中展開時, extern “C” 帶來的錯誤。

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

相關(guān)文章

  • C/C++中的?Qt?StandardItemModel?數(shù)據(jù)模型應(yīng)用解析

    C/C++中的?Qt?StandardItemModel?數(shù)據(jù)模型應(yīng)用解析

    QStandardItemModel?是標(biāo)準(zhǔn)的以項(xiàng)數(shù)據(jù)為單位的基于M/V模型的一種標(biāo)準(zhǔn)數(shù)據(jù)管理方式,本文給大家介紹C/C++中的?Qt?StandardItemModel?數(shù)據(jù)模型應(yīng)用解析,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 基于C語言實(shí)現(xiàn)三子棋游戲的示例代碼

    基于C語言實(shí)現(xiàn)三子棋游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言數(shù)組實(shí)現(xiàn)簡單的三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • OpenCV圖像輪廓提取的實(shí)現(xiàn)

    OpenCV圖像輪廓提取的實(shí)現(xiàn)

    本文主要介紹了OpenCV圖像輪廓提取的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C語言內(nèi)存操作函數(shù)使用示例梳理講解

    C語言內(nèi)存操作函數(shù)使用示例梳理講解

    這篇文章主要介紹了C語言庫函數(shù)中的內(nèi)存操作函數(shù)memcpy()、memmove()、memset()、memcmp()使用示例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • C/C++?Qt?數(shù)據(jù)庫與TreeView組件綁定詳解

    C/C++?Qt?數(shù)據(jù)庫與TreeView組件綁定詳解

    本篇文章主要介紹了QT數(shù)據(jù)庫與View組件的綁定,通過數(shù)據(jù)庫與組件關(guān)聯(lián)可實(shí)現(xiàn)動態(tài)展示數(shù)據(jù)庫中的表記錄。感興趣的小伙伴可以了解一下
    2021-12-12
  • 淺析C++中cout的運(yùn)行機(jī)制

    淺析C++中cout的運(yùn)行機(jī)制

    關(guān)于C++中cout的使用,相信大家再熟悉不過了,然而對于cout是如何輸出的?輸出的機(jī)制是啥,需要進(jìn)一步的了解。本章娓娓道來。前幾天在網(wǎng)上看到這么一個題目
    2013-10-10
  • C++二進(jìn)制翻轉(zhuǎn)實(shí)例分析

    C++二進(jìn)制翻轉(zhuǎn)實(shí)例分析

    這篇文章主要介紹了C++二進(jìn)制翻轉(zhuǎn),通過幾個實(shí)例分析二進(jìn)制翻轉(zhuǎn)算法的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2014-09-09
  • 深入淺出分析C++ string底層原理

    深入淺出分析C++ string底層原理

    C ++的string對象實(shí)質(zhì)上就是一個容器,其內(nèi)部有一個c_str方法能夠返回一個指向的實(shí)質(zhì)存儲字符串副本的數(shù)據(jù)成員。即通過string::c_str()配合printf函數(shù)可以獲取的字符串副本的內(nèi)存地址
    2021-11-11
  • C語言運(yùn)算符的重載詳解

    C語言運(yùn)算符的重載詳解

    這篇文章主要為大家詳細(xì)介紹C語言運(yùn)算符的重載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C語言中進(jìn)行大小寫字母轉(zhuǎn)化的示例代碼

    C語言中進(jìn)行大小寫字母轉(zhuǎn)化的示例代碼

    C語言標(biāo)準(zhǔn)庫中提供了用于大小寫轉(zhuǎn)換的函數(shù),使得這一操作變得簡單而高效,本文將詳細(xì)介紹如何在C語言中進(jìn)行大小寫字母的轉(zhuǎn)換,包括相關(guān)的函數(shù)和示例代碼,需要的朋友可以參考下
    2024-03-03

最新評論

华容县| 东海县| 温宿县| 皋兰县| 德阳市| 邵武市| 邳州市| 上饶市| 平顺县| 灵武市| 安丘市| 新巴尔虎左旗| 乌拉特后旗| 明星| 道孚县| 张北县| 宜春市| 疏勒县| 长汀县| 宾川县| 吴堡县| 庄浪县| 卢湾区| 宁明县| 平乐县| 蒙山县| 齐河县| 团风县| 南召县| 海林市| 清徐县| 新和县| 沾益县| 临高县| 开化县| 崇礼县| 浪卡子县| 镇原县| 大邑县| 嘉祥县| 舟山市|