哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

C語言里extern "C" 是什么意思?

Q4MP_gh_c472c21 ? 來源:CSDN博客 ? 作者:CSDN博客 ? 2020-09-07 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

這通常用于C++和C混合編程的時(shí)候,為了防止C++的編譯器在編譯C文件的時(shí)候出現(xiàn)錯(cuò)誤;眾所周知,C++可以進(jìn)行函數(shù)名重載,但是C則沒有這種功能,那這和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文件,通過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文件,通過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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146098

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言安全編碼指南:MISRA C、CERT C、CWE 與 C Secure 標(biāo)準(zhǔn)對(duì)比與Perforce QAC應(yīng)用詳解

    如何編寫真正安全的C語言代碼?指南涵蓋MISRA C、CERT、CWE等國際安全編碼標(biāo)準(zhǔn)對(duì)比,以及如何借助Perforce QAC自動(dòng)檢測漏洞。推薦給嵌入式/汽車/工業(yè)軟件的開發(fā)者!
    的頭像 發(fā)表于 01-26 17:38 ?1056次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>安全編碼指南:MISRA <b class='flag-5'>C</b>、CERT <b class='flag-5'>C</b>、CWE 與 <b class='flag-5'>C</b> Secure 標(biāo)準(zhǔn)對(duì)比與Perforce QAC應(yīng)用詳解

    C語言主要特點(diǎn)

    C語言的主要特點(diǎn)有: 1.語言簡潔、緊湊,使用方便、靈活 。C語言一共只有32個(gè)關(guān)鍵字、9種控制語句,程序書寫形式自由,主要用小寫字母表示,
    發(fā)表于 01-05 07:41

    為什么c語言沒有輸出?

    我在寫c語言程序的時(shí)候,經(jīng)常在程序編譯的時(shí)候沒有輸出,經(jīng)總結(jié),發(fā)現(xiàn)有以下原因: 1、scanf沒有加 。 2、邏輯問題,可能沒有輸入,才沒有輸出。 3、輸入scanf(\"%d
    發(fā)表于 01-05 06:40

    汽車網(wǎng)絡(luò)安全開發(fā)語言選型指南:C/C++/Rust/Java等主流語言對(duì)比+Perforce QAC/Klocwork工具支持

    汽車網(wǎng)絡(luò)安全如何選編程語言C、C++、Rust、Java……誰更適合AUTOSAR、ISO/SAE 21434?一文了解8種主流語言的優(yōu)劣與適用場景,以及Perforce QAC/K
    的頭像 發(fā)表于 12-26 11:13 ?615次閱讀
    汽車網(wǎng)絡(luò)安全開發(fā)<b class='flag-5'>語言</b>選型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++/Rust/Java等主流<b class='flag-5'>語言</b>對(duì)比+Perforce QAC/Klocwork工具支持

    C語言C++的區(qū)別及聯(lián)系

    C語言C++到底是什么關(guān)系? 首先C++和C語言本來就是兩種不同的編程
    發(fā)表于 12-24 07:23

    C語言C++之間的區(qū)別是什么

    區(qū)別 1、面向?qū)ο缶幊?(OOP): C語言是一種面向過程的語言,它強(qiáng)調(diào)的是通過函數(shù)將任務(wù)分解為一系列步驟進(jìn)行執(zhí)行。 C++在C
    發(fā)表于 12-11 06:23

    C語言特性

    1、高效性:直接操作硬件 C 語言代碼的執(zhí)行效率極高,這是其最為顯著的優(yōu)勢之一。它能夠直接訪問硬件資源,與底層硬件進(jìn)行緊密交互,充分發(fā)揮硬件的性能潛力。在嵌入式開發(fā)中,硬件資源往往十分有限,對(duì)程序
    發(fā)表于 11-24 07:01

    C語言和單片機(jī)C語言有什么差異

    單片機(jī)c語言相對(duì)于普通C語言增加了一些基本的指令,還有變量的賦值是16進(jìn)制,當(dāng)然單片機(jī)c語言只牽
    發(fā)表于 11-14 07:55

    C語言的printf基本用法介紹

    個(gè)簡單的例子: printf(\"C語言\"); 這個(gè)語句可以在屏幕上顯示“C語言”,與puts(\"C
    發(fā)表于 11-12 07:04

    第4章 C語言基礎(chǔ)以及流水燈的實(shí)現(xiàn)(4.5 4.6)

    (表達(dá)式) ? ? ? ?{ ? ? ? ? ? ?循環(huán)體語句; ? ? ? ?} 在C語言,通常“表達(dá)式”符合條件叫做真,不符合條件,叫做假。比如前邊i while(表達(dá)式)這個(gè)括號(hào)
    的頭像 發(fā)表于 11-06 11:21 ?496次閱讀

    第4章 C語言基礎(chǔ)以及流水燈的實(shí)現(xiàn)(4.3 4.4)

    的符號(hào)分別是:+、-、*、/、%。 C語言有一個(gè)很重要的賦值運(yùn)算符“=”,前邊程序有使用過。在C語言,“=”代表的意思是賦值,而不是等于。
    的頭像 發(fā)表于 10-29 15:30 ?419次閱讀

    MiniVC6(C語言快速部署)資料

    MiniVC6(C語言快速部署)軟件,無需安裝。
    發(fā)表于 09-04 16:59 ?0次下載

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

    在單片機(jī)的地界兒,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩
    的頭像 發(fā)表于 05-21 10:33 ?1185次閱讀
    主流的 MCU 開發(fā)<b class='flag-5'>語言</b>為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C</b>++?

    單片機(jī)c語言編程實(shí)例大全

    單片機(jī)c語言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?7次下載

    深入理解C語言C語言循環(huán)控制

    C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和
    的頭像 發(fā)表于 04-29 18:49 ?2198次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制
    开封市| 扶沟县| 东源县| 通海县| 子长县| 富民县| 东平县| 石楼县| 清原| 贡觉县| 咸宁市| 饶河县| 离岛区| 县级市| 辉县市| 长治县| 田阳县| 怀来县| 荔浦县| 喀喇沁旗| 禄丰县| 来安县| 琼结县| 安图县| 吉首市| 彩票| 德安县| 保山市| 昔阳县| 河南省| 安塞县| 阳曲县| 长汀县| 越西县| 西城区| 通州市| 和平县| 札达县| 吴忠市| 浑源县| 高碑店市|