欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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ǔ)言中,同一個(gè)函數(shù)能不能被定義兩次?

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2024-05-11 18:27 ? 次閱讀

C語(yǔ)言中,同一個(gè)函數(shù)能不能被定義兩次?

稍微有點(diǎn)C語(yǔ)言基礎(chǔ)的同學(xué),一定知道不能這樣做。

最近有同學(xué)在學(xué)習(xí)STM32,他就發(fā)現(xiàn)了這么一個(gè)問題,有些函數(shù)前面加了 __weak,然后這個(gè)函數(shù)就可以被重新定義。

這種情況常見于中斷函數(shù)里面,意思就是用戶可以自己定義,也可以用系統(tǒng)提供的。

__weak并不是C語(yǔ)言里面的關(guān)鍵字,具體的實(shí)現(xiàn)還是得看編譯器。

比如在keil里面,__weak就是一個(gè)宏定義,使用了C語(yǔ)言里面的 attribute 機(jī)制,這個(gè)機(jī)制我們?cè)谇懊嬉仓v過,里面可以用 packed aligned unused 等等。

今天我們?cè)賮?lái)補(bǔ)充一個(gè),weak。

比如在 test.c 文件中定義了函數(shù) test,如果在 main.c 里面又定義了一次,那編譯的時(shí)候,肯定會(huì)提示函數(shù)重復(fù)定義,一個(gè)函數(shù)不能被定義兩次。

但是如果在某個(gè) test 函數(shù)前面加上 __attribute__((weak)),編譯就能順利通過。

并且運(yùn)行的時(shí)候,默認(rèn)調(diào)用的也是前面沒有 weak 修飾的函數(shù)。

weak 就是告訴編譯器,該函數(shù)為弱定義,作為備選,如果用戶自己定義了,還是優(yōu)先調(diào)用用戶定義的函數(shù)。




審核編輯:劉清

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

    關(guān)注

    2272

    文章

    10925

    瀏覽量

    357704
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137776

原文標(biāo)題:函數(shù)也能重復(fù)定義

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中定義的應(yīng)用

    C語(yǔ)言中,宏定義種預(yù)處理指令,用于在代碼中定義和使用常量、函數(shù)或代碼片段的替代。
    發(fā)表于 08-17 15:33 ?909次閱讀

    C語(yǔ)言中定義的使用技巧

    #define命令是C語(yǔ)言中個(gè)定義命令,它用來(lái)將個(gè)
    發(fā)表于 09-05 10:12 ?1308次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>宏<b class='flag-5'>定義</b>的使用技巧

    C語(yǔ)言中結(jié)構(gòu)體能不能相加

    C語(yǔ)言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1357次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>結(jié)構(gòu)體<b class='flag-5'>能不能</b>相加

    STM32F103能在個(gè)PWM周期內(nèi)對(duì)同一個(gè)AD通道采樣兩次嗎?

    求助各位大神: 小弟在此感謝:STM32F103,,希望能在個(gè)PWM周期內(nèi)對(duì)同一個(gè)AD通道采樣兩次?或者多次,可以控制采樣起點(diǎn),連續(xù)采樣不合適。有什么辦法嗎?類似于在周期下溢點(diǎn),上溢
    發(fā)表于 04-17 07:25

    請(qǐng)問ISO3082中兩個(gè)地GND1和GND2能不能連接到同一個(gè)地上?

    ISO3082中兩個(gè)地 GND1和GND2能不能連接到同一個(gè)地上
    發(fā)表于 12-02 07:29

    si4463的發(fā)送和接收r能不能使用同一個(gè)頻點(diǎn)?

    si4463的發(fā)送和接收r能不能使用同一個(gè)頻點(diǎn),怎么用?
    發(fā)表于 09-14 10:07

    同一個(gè)定時(shí)器能不能既有輸出比較又有輸入捕獲?

    同一個(gè)定時(shí)器,比如TIM1能不能設(shè)置通道1位定時(shí)器比較,通道2位定時(shí)器輸入捕獲
    發(fā)表于 10-24 08:10

    電池能不能修復(fù)?

    電池能不能修復(fù)? 電池修復(fù)作為個(gè)新生事物,許多人對(duì)它不了解,也有許多人對(duì)它知半解。那么電池到底能不能修復(fù)呢?
    發(fā)表于 11-23 10:40 ?1119次閱讀

    C語(yǔ)言中的宏定義

    #define命令是C語(yǔ)言中個(gè)定義命令,它用來(lái)將個(gè)
    的頭像 發(fā)表于 09-28 16:05 ?3523次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言中</b>的宏<b class='flag-5'>定義</b>

    個(gè)c源程序至少包括個(gè)函數(shù)

    個(gè)C源程序至少包括個(gè)函數(shù)。 C
    的頭像 發(fā)表于 11-26 09:01 ?1281次閱讀

    如何給C語(yǔ)言中函數(shù)定義兩個(gè)不同的名字?

    最近有位哥問我,如何給C語(yǔ)言中函數(shù)定義兩個(gè)不同的名字?就是這兩個(gè)名字都是指向
    的頭像 發(fā)表于 12-19 16:21 ?943次閱讀

    同VLAN不同的網(wǎng)段能不能互通?

    同VLAN不同的網(wǎng)段能不能互通? 同一個(gè)VLAN中的設(shè)備擁有相同的網(wǎng)絡(luò)地址范圍,因此它們可以通過該VLAN進(jìn)行通信。而不同VLAN中的設(shè)備擁有不同的網(wǎng)絡(luò)地址范圍,它們通常不能直接互通。然而,在某些
    的頭像 發(fā)表于 02-04 11:21 ?3300次閱讀

    使用C語(yǔ)言實(shí)現(xiàn)函數(shù)模板

      用C語(yǔ)言能不能實(shí)現(xiàn)個(gè)通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點(diǎn)數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?489次閱讀

    C語(yǔ)言中的頭文件能不能重復(fù)包含

    C語(yǔ)言中的頭文件能不能重復(fù)包含? 比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發(fā)表于 11-26 17:19 ?234次閱讀

    C語(yǔ)言中申請(qǐng)的堆內(nèi)存能不能自動(dòng)釋放

    C語(yǔ)言中申請(qǐng)的堆內(nèi)存能不能自動(dòng)釋放?每次都要手動(dòng) free 太麻煩,也容易忘記。 學(xué)過 C++ 的同學(xué),應(yīng)該首先能想到智能指針。 但是這是C
    的頭像 發(fā)表于 11-27 09:33 ?171次閱讀