欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

C++項(xiàng)目:

C程序項(xiàng)目:

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

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

生成靜態(tài)庫(kù)

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

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

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

包含頭文件

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

然后包含頭文件

添加依賴(lài)庫(kù)

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

extern

然后我們需要用extern 來(lái)修飾這個(gè)頭文件。

extern "C" //用C語(yǔ)言的方式編譯括號(hào)內(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程序

但此時(shí)問(wèn)題了,C 語(yǔ)言里 沒(méi)有 extern "C"這個(gè)用法,這種用法放在C程序里會(huì)出錯(cuò),所以我們把它刪掉。

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

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

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

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

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

__cplusplus 是一個(gè)宏定義,只要在以C++程序編譯時(shí),才會(huì)有。如果不是以C++程序編譯,那么就不會(huì) 展開(kāi) extern “C”。

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

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

主程序里也別忘了添加依賴(lài)庫(kù)

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

總結(jié)

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

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

相關(guān)文章

  • C++瓦片地圖坐標(biāo)轉(zhuǎn)換的實(shí)現(xiàn)詳解

    C++瓦片地圖坐標(biāo)轉(zhuǎn)換的實(shí)現(xiàn)詳解

    常見(jiàn)的瓦片地圖有矩形、菱形、正六邊形幾種。此文章主要討論菱形瓦片,也就是大家常說(shuō)的2.5D,斜45度瓦片地圖。比如《紅警2》、《帝國(guó)時(shí)代2》都是采用這種技術(shù)
    2022-09-09
  • C語(yǔ)言實(shí)現(xiàn)楊輝三角實(shí)例

    C語(yǔ)言實(shí)現(xiàn)楊輝三角實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)楊輝三角的方法,主要通過(guò)數(shù)組簡(jiǎn)單實(shí)現(xiàn),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • C/C++實(shí)現(xiàn)內(nèi)存泄漏檢測(cè)詳解

    C/C++實(shí)現(xiàn)內(nèi)存泄漏檢測(cè)詳解

    這篇文章主要為大家詳細(xì)介紹了c++進(jìn)行內(nèi)存泄漏檢測(cè)的方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2023-02-02
  • C語(yǔ)言中的abs()函數(shù)和exp()函數(shù)的用法

    C語(yǔ)言中的abs()函數(shù)和exp()函數(shù)的用法

    這篇文章主要介紹了C語(yǔ)言中的abs()函數(shù)和exp()函數(shù)的用法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • 深入淺析STL vector用法

    深入淺析STL vector用法

    這篇文章給大家介紹 stl vector用法,主要知識(shí)點(diǎn)在如何恰當(dāng)?shù)氖褂盟鼈兊某蓡T函數(shù),涉及到條件函數(shù)和函數(shù)指針在迭代算法中的使用,對(duì)stl vector用法感興趣的朋友可以參考下本文
    2015-10-10
  • LeetCode題解C++生成每種字符都是奇數(shù)個(gè)的字符串

    LeetCode題解C++生成每種字符都是奇數(shù)個(gè)的字符串

    這篇文章主要為大家介紹了LeetCode題解C++生成每種字符都是奇數(shù)個(gè)的字符串示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 解析c中stdout與stderr容易忽視的一些細(xì)節(jié)

    解析c中stdout與stderr容易忽視的一些細(xì)節(jié)

    本篇文章是對(duì)在c語(yǔ)言中stdout與stderr容易忽視的一些細(xì)節(jié)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 詳解C++的反調(diào)試技術(shù)與繞過(guò)手法

    詳解C++的反調(diào)試技術(shù)與繞過(guò)手法

    反調(diào)試技術(shù),惡意代碼會(huì)用它識(shí)別自身是否被調(diào)試,或者讓調(diào)試器失效,給反病毒工程師們制造麻煩,拉長(zhǎng)提取特征碼的時(shí)間線(xiàn),本章將具體總結(jié)常見(jiàn)的反調(diào)試基礎(chǔ)的實(shí)現(xiàn)原理以及如何過(guò)掉這些反調(diào)試手段,從而讓我們能夠繼續(xù)分析惡意代碼
    2021-06-06
  • 利用C語(yǔ)言編輯畫(huà)圖程序的實(shí)現(xiàn)方法(推薦)

    利用C語(yǔ)言編輯畫(huà)圖程序的實(shí)現(xiàn)方法(推薦)

    下面小編就為大家?guī)?lái)一篇利用C語(yǔ)言編輯畫(huà)圖程序的實(shí)現(xiàn)方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 如何利用Matlab繪制出好看的火山圖

    如何利用Matlab繪制出好看的火山圖

    火山圖是散點(diǎn)圖的一種,它將統(tǒng)計(jì)測(cè)試中的統(tǒng)計(jì)顯著性量度和變化幅度相結(jié)合,從而能夠幫助快速直觀(guān)地識(shí)別那些變化幅度較大且具有統(tǒng)計(jì)學(xué)意義的數(shù)據(jù)點(diǎn)。本文將通過(guò)Matlab繪制好看的火山圖,需要的可以參考一下
    2022-03-03

最新評(píng)論