色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言里extern "C" 是什么意思?

Q4MP_gh_c472c21 ? 來(lái)源:CSDN博客 ? 作者:CSDN博客 ? 2020-09-07 11:09 ? 次閱讀

經(jīng)常在C語(yǔ)言的頭文件中看到下面的代碼:

#ifdef__cplusplus extern"C"{ #endif //allofyourlegacyCcodehere #ifdef__cplusplus } #endif

這通常用于C++和C混合編程的時(shí)候,為了防止C++的編譯器在編譯C文件的時(shí)候出現(xiàn)錯(cuò)誤;眾所周知,C++可以進(jìn)行函數(shù)名重載,但是C則沒(méi)有這種功能,那這和extern "C"又有什么關(guān)系呢?
先看下面這個(gè)表格,如下所示;

未添加 extern "C"

test.h

#ifndefTEST_H #defineTEST_H voidfoo1(void); voidfoo2(void); voidfoo3(inti); #endif

test.c

voidfoo1(void){} voidfoo2(void){} voidfoo3(inti){} intmain(intargc,char**argv){ foo1(); foo2(); foo3(1); return0; }

編譯這兩個(gè)文件,生成test.o文件,通過(guò)objdump查看函數(shù)符號(hào);

g++-ctest.ctest.h objdump-ttest.o

可以看到函數(shù)符號(hào)已經(jīng)被編譯器修改了;

添加extern "C"

test.h

#ifndefTEST_H #defineTEST_H #ifdef__cplusplus extern"C"{ #endif voidfoo1(void); voidfoo2(void); voidfoo3(inti); #ifdef__cplusplus } #endif #endif

test.c

#ifdef__cplusplus extern"C"{ #endif voidfoo1(void){} voidfoo2(void){} voidfoo3(inti){} #ifdef__cplusplus } #endif intmain(intargc,char**argv){ foo1(); foo2(); foo3(1); return0; }

編譯這兩個(gè)文件,生成test.o文件,通過(guò)objdump查看函數(shù)符號(hào);

g++-ctest.ctest.h objdump-ttest.o

這時(shí)候函數(shù)符號(hào)是正確的;

extern "C"是告訴C++的編譯器不要打我這些C函數(shù)的主意。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137207

原文標(biāo)題:長(zhǎng)見識(shí):你真的知道C語(yǔ)言里extern "C" 的作用嗎?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言程序設(shè)計(jì)教程第4版第8講:指針

    C語(yǔ)言指針講解
    發(fā)表于 11-20 14:10 ?0次下載

    C語(yǔ)言指針學(xué)習(xí)筆記

    本文從底層內(nèi)存分析,徹底讓讀者明白C語(yǔ)言指針的本質(zhì)。
    的頭像 發(fā)表于 11-05 17:40 ?270次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>指針學(xué)習(xí)筆記

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?383次閱讀

    C語(yǔ)言C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?299次閱讀

    C語(yǔ)言與Java語(yǔ)言的對(duì)比

    C語(yǔ)言和Java語(yǔ)言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。以下將從語(yǔ)法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對(duì)C
    的頭像 發(fā)表于 10-29 17:31 ?383次閱讀

    C++語(yǔ)言基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《C++語(yǔ)言基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:58 ?7次下載

    按照這樣學(xué)習(xí)C語(yǔ)言,成為卷王不是夢(mèng)!

    在計(jì)算機(jī)編程領(lǐng)域,C語(yǔ)言被譽(yù)為一種強(qiáng)大而靈活的編程語(yǔ)言,掌握好C語(yǔ)言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠?yàn)槟愕穆殬I(yè)生涯打下堅(jiān)實(shí)的基礎(chǔ)。但
    的頭像 發(fā)表于 07-06 08:04 ?334次閱讀
    按照這樣學(xué)習(xí)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>,成為卷王不是夢(mèng)!

    PLC編程語(yǔ)言C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯著的區(qū)別。本文將從多個(gè)維度深入探討PLC編程
    的頭像 發(fā)表于 06-14 17:11 ?3036次閱讀

    C語(yǔ)言基礎(chǔ)-為什么要使用C

    當(dāng)今最流行的 Linux 操作系統(tǒng)和 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) MySQL 都是使用 C 語(yǔ)言編寫的。
    發(fā)表于 03-25 11:20 ?470次閱讀

    嵌入式系統(tǒng)中C語(yǔ)言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語(yǔ)言中的數(shù)組只能允許程序員定義存儲(chǔ)相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語(yǔ)言編程中允許您存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?524次閱讀
    嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語(yǔ)言#define的應(yīng)用

    C/C++ 編程語(yǔ)言中,當(dāng)程序被編譯時(shí),被發(fā)送到編譯器,編譯器將程序轉(zhuǎn)換為機(jī)器語(yǔ)言,然后完成編譯并執(zhí)行該程序。預(yù)處理器也稱為宏預(yù)處理器。
    發(fā)表于 03-06 11:29 ?393次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>#define的應(yīng)用

    C語(yǔ)言的指針用法

    C語(yǔ)言編程中善用指針可以簡(jiǎn)化一些任務(wù)的處理,而對(duì)于一些任務(wù)(比如動(dòng)態(tài)內(nèi)存分配),必須要有指針才行的。也就是說(shuō)精通C指針編程是很有必要的,幫助你成為一名優(yōu)秀的Cer。
    發(fā)表于 03-05 14:22 ?381次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的指針用法

    plc編程語(yǔ)言c語(yǔ)言的聯(lián)系 c語(yǔ)言和PLC有什么區(qū)別

    PLC編程語(yǔ)言C語(yǔ)言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對(duì)自動(dòng)化控制系統(tǒng)的特殊計(jì)算機(jī)。PLC編程語(yǔ)言是為了控制和管理自動(dòng)化生產(chǎn)過(guò)程中的各種設(shè)備而設(shè)計(jì)的。與之相比,
    的頭像 發(fā)表于 02-05 14:21 ?4259次閱讀

    c語(yǔ)言,c++,java,python區(qū)別

    C語(yǔ)言C++、Java和Python是四種常見的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言
    的頭像 發(fā)表于 02-05 14:11 ?2495次閱讀

    vb語(yǔ)言c++語(yǔ)言的區(qū)別

    VB語(yǔ)言C++語(yǔ)言是兩種不同的編程語(yǔ)言,雖然它們都屬于高級(jí)編程語(yǔ)言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將詳細(xì)比較VB
    的頭像 發(fā)表于 02-01 10:20 ?2406次閱讀
    主站蜘蛛池模板: 亚洲精品无码一区二区三区四虎 | 99RE6国产精品视频播放| 在线中文高清资源免费观看| 中文字幕亚洲无线码高清不卡| 1788福利视频在视频线| 99er4久久视频精品首页| younv 学生国产在线视频| 国产3级在线观看| 国产综合18久久久久久软件| 久久电影精品| 欧美美女论坛| 午夜成a人片在线观看| 亚洲蜜桃AV永久无码精品放毛片| 伊人久久大线蕉香港三级| 99热精品在线av播放| 国产成人无码区免费内射一片色欲 | 久久伊人影院| 秋霞伦理手机在线看片| 午夜国产精品视频在线| 夜色帮首页| WRITEAS检查身体| 国产婷婷午夜精品无码A片| 久久影院毛片一区二区| 色妹子综合| 野花4在线观看| 99日精品欧美国产| 国产精品久久久久久无码专区| 久久re6热在线视频| 日本xxxxxxxxx老师59| 亚洲精品国产自在在线观看| 999精品国产人妻无码系列| 国产精品99| 美女穿丝袜被狂躁动态图| 婷婷午夜影院| 18岁男人女人插孔| 国产产乱码一二三区别免费| 久久99国产精品蜜臀AV| 日本久久久| 伊人久久综合谁合综合久久| 成人在线观看国产| 久久精品99国产精品日本|