日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

深入探索GCC的attribute屬性

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2025-02-13 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如果經(jīng)???a href="http://m.sdkjxy.cn/v/tag/538/" target="_blank">Linux源碼,一定會(huì)見(jiàn)過(guò) attribute 屬性,他在 Linux 里面出現(xiàn)的很多。

attribute 是 gcc 的擴(kuò)展功能,它不屬于標(biāo)準(zhǔn)C語(yǔ)言

使用 attribute 可以修飾變量、函數(shù)或者數(shù)據(jù)類型的屬性,屬性有很多,有些確實(shí)很有用。

找了幾個(gè)可以修飾函數(shù)的屬性,供大家參考下。

如果希望函數(shù)可以在 main 函數(shù)前面執(zhí)行,可以用 constructor 屬性,就是構(gòu)造的意思。

如果希望函數(shù)可以在 main 函數(shù)之后執(zhí)行,可以用 destrucotr 屬性,有點(diǎn)析構(gòu)的意思。

網(wǎng)上有些介紹使用這兩個(gè)屬性來(lái)模擬 C++ 的構(gòu)造函數(shù)和析構(gòu)函數(shù),說(shuō)實(shí)話,這比 C++ 里面的構(gòu)造和析構(gòu)差遠(yuǎn)了,用它來(lái)給程序做些初始化、回收的操作,還是可以的。

第二個(gè),nonnull。

寫(xiě)函數(shù)的時(shí)候,我們經(jīng)常對(duì)函數(shù)做入?yún)⑴袛?,比如防止傳進(jìn)來(lái)的參數(shù)是空指針,導(dǎo)致程序下面出現(xiàn)異常。

使用 nonnull 屬性,可以讓編譯器來(lái)判斷。如果傳進(jìn)來(lái)的參數(shù)是 NULL,編譯的時(shí)候會(huì)提示警告,非常的人性化。

第三個(gè),deprecated。

如果想把某個(gè)函數(shù)廢棄掉,比如在項(xiàng)目的后續(xù)版本中不再使用,可以使用 deprecated 屬性,加上這個(gè)屬性,如果你還是使用這個(gè)函數(shù),編譯就會(huì)提示警告。

比如常見(jiàn)的 gets 函數(shù),如果一下子把它從標(biāo)準(zhǔn)庫(kù)中刪掉,對(duì)以前的程序不夠友好,所以只能提醒。

第四個(gè),noreturn。

對(duì)于不會(huì)返回的函數(shù),可以使用 noreturn 屬性。注意,返回值是 void 類型和函數(shù)不返回是兩碼事,這樣的代碼編譯會(huì)提示警告。

如果在函數(shù)內(nèi)部加上死循環(huán)或者退出,這樣的函數(shù)才屬于不返回。

第五個(gè),weak,用于定義弱函數(shù)。

比如在一個(gè)文件中定義了弱函數(shù),另一個(gè)文件完全可以重新再定義一遍,并且編譯器會(huì)自動(dòng)鏈接到用戶定義的新函數(shù)上。

weak 屬性在 STM32 上面出現(xiàn)的很多,比如中斷函數(shù)等等。

gcc 擴(kuò)展的屬性很多,打開(kāi) gcc 文檔,粗略的估算了一下,可能有百來(lái)個(gè)。

可能是C語(yǔ)言也發(fā)現(xiàn)了這些屬性好用,在最新的C23標(biāo)準(zhǔn)里面,也加入了屬性這個(gè)概念,不過(guò)用法很奇葩,使用兩個(gè)嵌套的中括號(hào),而且目前支持的屬性也比較少。

編譯器一直都是走在標(biāo)準(zhǔn)的前面,也許在接下來(lái)的某個(gè)C語(yǔ)言標(biāo)準(zhǔn)中,會(huì)有更多的 gcc 屬性加入到C語(yǔ)言中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11822

    瀏覽量

    219604
  • GCC
    GCC
    +關(guān)注

    關(guān)注

    0

    文章

    112

    瀏覽量

    26426

原文標(biāo)題:gcc的attribute屬性,確實(shí)值得學(xué)習(xí)

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CW32系列MCU在Eclipse GCC + JLink下的使用示例分享

    CW32系列MCU在Eclipse GCC + JLink下的使用示例: 1、下載安裝Eclipse IDE for Embedded C/C++ Developers。 2、下載安裝
    發(fā)表于 02-02 06:57

    GCC開(kāi)發(fā)工程的模版

    1、拷貝一份工程,另存為cw32l083_gcc,并用vscode打開(kāi)。 2、到官網(wǎng)下載cw32l083的固件庫(kù)。 3、把cw32l083-stdperiph-lib/Libraries下面的固件
    發(fā)表于 11-28 08:15

    芯來(lái)IDE是否支持__attribute__( (packed) )?需要設(shè)置什么嗎?

    要開(kāi)發(fā)一個(gè)以太網(wǎng)應(yīng)用,使用__attribute__( (packed) ),可是在初始化的時(shí)候檢查size發(fā)現(xiàn)沒(méi)有按照要求壓縮。想問(wèn)一下需要設(shè)置什么嗎,還是說(shuō)不支持。
    發(fā)表于 11-10 08:12

    如何將某個(gè)函數(shù)或變量放在固定的地址 ?

    如題,如何將某個(gè)函數(shù)或者變量放在固定的地址?類似于__attribute__( at(絕對(duì)地址) ),用的nucleistudio ide, __attribute__( at(絕對(duì)地址) )出現(xiàn)警告 at屬性被忽視,有類似的
    發(fā)表于 11-07 06:07

    如何利用 gcc 編譯Ccode?

    最近在玩e203_hbirdv2,利用默認(rèn)的case 可以仿真。現(xiàn)在想自己寫(xiě)C code 進(jìn)行仿真,請(qǐng)問(wèn)該如何利用 gcc 編譯?有沒(méi)有 詳細(xì)的教程。
    發(fā)表于 11-05 12:37

    GD32F470使用__attribute__語(yǔ)句,keil編譯通過(guò)但是scons編譯不通過(guò),為什么?

    問(wèn)題語(yǔ)句: uint16_t ltdc_lcd_framebuf0[800][480] __attribute__((at(LCD_FRAME_BUF_ADDR))); 上述語(yǔ)句在keil編譯
    發(fā)表于 10-14 06:05

    商品類目屬性查詢接口技術(shù)實(shí)現(xiàn)詳解

    attribute_type string 否 屬性類型過(guò)濾(K/S/N) page int 否 當(dāng)前頁(yè)碼(默認(rèn)1) page_size int 否 每頁(yè)數(shù)量(默認(rèn)20) lang string 否 語(yǔ)言標(biāo)識(shí)(如zh-CN/en-US) 三、技
    的頭像 發(fā)表于 10-11 15:43 ?582次閱讀
    商品類目<b class='flag-5'>屬性</b>查詢接口技術(shù)實(shí)現(xiàn)詳解

    cubemx+clion+gcc無(wú)法使用msh怎么解決?

    通過(guò)STM32CUMX配置RTTHREAD NANO ,用keil編譯并且移植shell之后,輸入鍵盤(pán)上下鍵無(wú)反應(yīng),而用clion+gcc編譯后(修改過(guò)啟動(dòng)文件),只能打印version信息,無(wú)法顯示msh和輸入,兩者除了啟動(dòng)文件以外,其余的配置基本相同,請(qǐng)問(wèn)為啥gcc
    發(fā)表于 09-23 07:36

    《AI芯片:科技探索與AGI愿景》—— 深入硬件核心的AGI指南

    《AI芯片:科技探索與AGI愿景》一書(shū)如同一張?jiān)敱M的“藏寶圖”,為讀者指明了通往下一代人工智能的硬件之路。作者沒(méi)有停留在空洞的概念層面,而是直擊核心,從馮·諾依曼架構(gòu)的“內(nèi)存墻”瓶頸切入,清晰闡述了
    發(fā)表于 09-17 09:29

    為什么將 GCC 項(xiàng)目導(dǎo)入 NuEclipse 失?。?/a>

    為什么將 GCC 項(xiàng)目導(dǎo)入 NuEclipse 失?。?/div>
    發(fā)表于 09-01 08:05

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?
    發(fā)表于 09-01 07:04

    ATT讀取由組請(qǐng)求CYBLE-416045-02 gatt服務(wù)器響應(yīng),帶有錯(cuò)誤的起始和結(jié)束屬性句柄怎么解決?

    過(guò)程中,需要經(jīng)過(guò) ATT 按組類型請(qǐng)求讀取,我的服務(wù)器響應(yīng)如下: ... 客戶端 ATT 按組請(qǐng)求讀取:起始屬性句柄 = 70 / 結(jié)束屬性句柄 = 65535 我的服務(wù)器響應(yīng):句柄值對(duì){Start
    發(fā)表于 08-14 07:28

    CW32L010 MCU在VSCode+GCC+EIDE+JLink下的使用示例

    CW32L010 MCU 在VSCode+GCC+ EIDE + JLink 下的使用示例: 1、點(diǎn)擊VSCode左邊欄中的Extensions,在EXTENSIONS:MARKETPLACE搜索
    的頭像 發(fā)表于 07-01 14:52 ?1264次閱讀
    CW32L010 MCU在VSCode+<b class='flag-5'>GCC</b>+EIDE+JLink下的使用示例

    \"module object has no attribute load\"這個(gè)怎么解決?

    \"module object has no attribute load\"這個(gè)怎么解決
    發(fā)表于 06-19 07:03

    cubemx+clion+gcc無(wú)法使用msh怎么解決?

    通過(guò)STM32CUMX配置RTTHREAD NANO ,用keil編譯并且移植shell之后,輸入鍵盤(pán)上下鍵無(wú)反應(yīng),而用clion+gcc編譯后(修改過(guò)啟動(dòng)文件),只能打印version信息,無(wú)法顯示msh和輸入,兩者除了啟動(dòng)文件以外,其余的配置基本相同,請(qǐng)問(wèn)為啥gcc
    發(fā)表于 06-13 08:17
    美姑县| 镶黄旗| 翁牛特旗| 得荣县| 大同市| 应用必备| 怀宁县| 加查县| 龙州县| 江达县| 监利县| 兴山县| 武邑县| 囊谦县| 信宜市| 凤山市| 屏山县| 高要市| 贡觉县| 都江堰市| 屏山县| 黑水县| 都匀市| 闽侯县| 巫溪县| 合肥市| 海丰县| 青田县| 乌兰县| 原阳县| 台州市| 赣州市| 武川县| 同德县| 合山市| 玉林市| 辽宁省| 阿城市| 迁安市| 启东市| 互助|