chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識你,還能領(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混合編程的時候,為了防止C++的編譯器在編譯C文件的時候出現(xiàn)錯誤;眾所周知,C++可以進(jìn)行函數(shù)名重載,但是C則沒有這種功能,那這和extern "C"又有什么關(guān)系呢?
先看下面這個表格,如下所示;

未添加 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; }

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

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

可以看到函數(shù)符號已經(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; }

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

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

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

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

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

    關(guān)注

    183

    文章

    7642

    瀏覽量

    145111

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    C語言主要特點

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

    為什么c語言沒有輸出?

    我在寫c語言程序的時候,經(jīng)常在程序編譯的時候沒有輸出,經(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等主流語言對比+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 ?287次閱讀
    汽車網(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>對比+Perforce QAC/Klocwork工具支持

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

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

    C語言特性

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

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

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

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

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

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

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

    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 ?926次閱讀
    主流的 MCU 開發(fā)<b class='flag-5'>語言</b>為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C</b>++?

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

    單片機(jī)c語言編程實例大全_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 ?1904次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制

    C語言的歷史及程序介紹

    電子發(fā)燒友網(wǎng)站提供《C語言的歷史及程序介紹.pdf》資料免費下載
    發(fā)表于 04-09 16:10 ?0次下載

    如何在 樹莓派 上編寫和運行 C 語言程序?

    在本教程中,我將討論C編程語言是什么,C編程的用途,以及如何在RaspberryPi上編寫和運行C程序。本文的目的是為您介紹在RaspberryPi上進(jìn)行
    的頭像 發(fā)表于 03-25 09:28 ?1049次閱讀
    如何在 樹莓派 上編寫和運行 <b class='flag-5'>C</b> <b class='flag-5'>語言</b>程序?

    51單片機(jī)C語言學(xué)習(xí)筆記

    c51語言快速入門
    發(fā)表于 03-24 14:04 ?3次下載