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

C/C++中extern "C" 的作用分析

 更新時(shí)間:2014年09月05日 11:11:59   投稿:shichen2014  
這篇文章主要介紹了C/C++中extern "C" 的作用,是在進(jìn)行C/C++程序設(shè)計(jì)中非常常見(jiàn)的用法,需要的朋友可以參考下

我們經(jīng)常會(huì)在C/C++程序中見(jiàn)到extern "C",這是一個(gè)很重要的概念。本文就來(lái)以實(shí)例形式講述C/C++中extern "C"的作用。分享給大家供大家參考之用。具體分析如下:

作用:實(shí)現(xiàn)C和C++混合編程。

原理:C和C++編譯器編譯之后,函數(shù)名會(huì)編譯成不同的名字,鏈接階段名字查找會(huì)找不到目標(biāo),后面實(shí)例中會(huì)詳解。

用法:
①.c文件中定義的函數(shù),.cpp文件要調(diào)用時(shí),該.cpp文件中要用extern "C"聲明該函數(shù);
②.反過(guò)來(lái),.cpp文件中定義的函數(shù),.c文件要調(diào)用,則同樣要在.cpp文件中用extern "C"聲明,.c文件只用普通的extern聲明。

兩個(gè)源文件分別編譯成.o文件,再鏈接成執(zhí)行文件。鏈接.o文件生成執(zhí)行文件時(shí),必須得用g++。

實(shí)例:

在源文件中聲明的,沒(méi)有頭文件

.c文件定義的函數(shù),.cpp文件調(diào)用:

//.c文件定義的函數(shù)
extern int myadd(int a, int b);
int myadd(int a, int b)
{
  return a+b;
}

//.cpp文件調(diào)用
#include <iostream>
using namespace std;
extern "C" int myadd(int a, int b);
int main()
{
  cout << myadd(3, 7) << endl;
  return 0;
}

.cpp文件定義的函數(shù),.c文件調(diào)用:

//.cpp文件定義的函數(shù)
extern "C" int myadd(int a, int b);
int myadd(int a, int b)
{
  return a + b;
}

//.c文件調(diào)用
#include <stdio.h>
extern int myadd(int a, int b);
int main()
{
  printf("%d\n", myadd(3, 7));
  return 0;
}

如果在頭文件中聲明,則.c文件正常的包含該頭文件,.cpp文件應(yīng)該用

//.cpp文件的包含方式
extern "C"
{
  #include "myHead.h"
}

的方式來(lái)包含頭文件,該頭文件中聲明的函數(shù)都為C方式編譯。

原理補(bǔ)充:C文件中,上述函數(shù)編譯之后的函數(shù)名為類(lèi)似于_myadd的形式,而CPP的編譯之后函數(shù)名為類(lèi)似于_myadd_int_int的形式,因?yàn)镃PP要支持重載,用這種方式來(lái)區(qū)別重載的函數(shù)。

相信本文所述對(duì)大家的C++程序設(shè)計(jì)有一定的借鑒價(jià)值。

相關(guān)文章

  • Qt實(shí)現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)

    Qt實(shí)現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)

    這篇文章主要介紹了在Qt中實(shí)現(xiàn)將QTableWidget或者QTableView中的數(shù)據(jù)直接導(dǎo)出的示例代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-01-01
  • C++模板編程特性之移動(dòng)語(yǔ)義

    C++模板編程特性之移動(dòng)語(yǔ)義

    首先,移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)這兩個(gè)概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來(lái)使用。本篇會(huì)從C++的值類(lèi)型,到移動(dòng)拷貝與移動(dòng)賦值來(lái)理解移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)
    2022-08-08
  • Qt利用QChart實(shí)現(xiàn)實(shí)時(shí)波形圖的繪制

    Qt利用QChart實(shí)現(xiàn)實(shí)時(shí)波形圖的繪制

    這篇文章主要介紹了Qt如何利用QChart實(shí)現(xiàn)實(shí)時(shí)波形圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定是參考價(jià)值,需要的可以參考一下
    2022-06-06
  • c++線程池實(shí)現(xiàn)方法

    c++線程池實(shí)現(xiàn)方法

    這篇文章主要介紹了c++線程池實(shí)現(xiàn)方法,實(shí)例分析了C++線程池的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • C++控制臺(tái)強(qiáng)化如何實(shí)現(xiàn)一定界面效果(簡(jiǎn)潔版)

    C++控制臺(tái)強(qiáng)化如何實(shí)現(xiàn)一定界面效果(簡(jiǎn)潔版)

    這篇文章主要介紹了C++控制臺(tái)強(qiáng)化如何實(shí)現(xiàn)一定界面效果(簡(jiǎn)潔版),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng)

    如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng)

    這篇文章主要介紹了如何寫(xiě)好C main函數(shù)的幾個(gè)注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 詳解C語(yǔ)言中sizeof如何在自定義函數(shù)中正常工作

    詳解C語(yǔ)言中sizeof如何在自定義函數(shù)中正常工作

    在main函數(shù)中,sizeof是可以正常工作的,但是在自定義函數(shù)中就不可以了。所以本文將為大家詳細(xì)講解一下如何解決這一問(wèn)題,感興趣的可以了解一下
    2022-05-05
  • C++設(shè)計(jì)模式之原型模式

    C++設(shè)計(jì)模式之原型模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之原型模式,本文講解了什么是原型模式、為什么要使用原型模式、代碼實(shí)例等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言實(shí)現(xiàn)繪制繞線畫(huà)的示例代碼

    C語(yǔ)言實(shí)現(xiàn)繪制繞線畫(huà)的示例代碼

    繞線畫(huà)簡(jiǎn)單點(diǎn)來(lái)說(shuō),就是在木板上釘一圈釘子,通過(guò)繞線進(jìn)行構(gòu)圖,最終呈現(xiàn)出一幅圖像。本文將用C語(yǔ)言實(shí)現(xiàn)這一效果,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論

定结县| 金阳县| 茶陵县| 靖安县| 三都| 固镇县| 敦化市| 天等县| 建平县| 江孜县| 宁阳县| 万载县| 酒泉市| 杂多县| 怀仁县| 武功县| 安庆市| 文昌市| 贵定县| 德兴市| 康马县| 若羌县| 建德市| 凤凰县| 内乡县| 杂多县| 出国| 鹤壁市| 尉犁县| 陕西省| 鸡西市| 台山市| 左云县| 东阿县| 慈利县| 咸丰县| 双峰县| 科尔| 雅江县| 鱼台县| 甘洛县|