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

C程序和C++程序之間的互相調用圖文教程

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

前言

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

一、C++調用C

首先,我們先我們要有2個項目,一個項目以C++程序編譯,要調用的項目則是以C程序編譯的。

C++項目:

C程序項目:

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

因為是C++調用C,而一個程序只有一個main函數(shù),所以C項目里是沒有main函數(shù)的。

生成靜態(tài)庫

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

點擊確定,然后編譯。

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

包含頭文件

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

然后包含頭文件

添加依賴庫

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

extern

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

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

然后我們運行程序

這樣,就成功的使用 CPP程序調用C程序的內容了

二、C調用C++

C調用和C++ , 和C++調用C,其實差不多。

我們把要調用的程序 改成C++程序

然后把主程序改成C程序

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

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

然后 打印的內容改成 is C++

因為CPP程序和C語言程序對函數(shù)名的修飾不同,所以我們要用extern 來修飾C++程序里需要調用的函數(shù),

但此時問題又來了,.h的頭文件會在預處理的時候展開,但是C語言不認識 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程序調用了C++程序里的函數(shù)

總結

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

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

相關文章

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

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

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

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

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

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

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

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

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

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

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

    淺析C++中cout的運行機制

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

    C++二進制翻轉實例分析

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

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

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

    C語言運算符的重載詳解

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

    C語言中進行大小寫字母轉化的示例代碼

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

最新評論

图们市| 黄浦区| 会同县| 泰和县| 宁安市| 涟源市| 武山县| 苍山县| 商南县| 偏关县| 密山市| 佳木斯市| 双流县| 青海省| 北票市| 龙江县| 土默特左旗| 湘潭市| 青川县| 英德市| 宁乡县| 阳西县| 余江县| 密山市| 专栏| 黄陵县| 和田县| 武鸣县| 东山县| 晋城| 广南县| 清镇市| 吉安市| 长子县| 大安市| 丽江市| 汨罗市| 运城市| 韶关市| 满洲里市| 澄江县|