在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入探索GCC的attribute屬性

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

掃碼添加小助手

加入工程師交流群

如果經常看Linux源碼,一定會見過 attribute 屬性,他在 Linux 里面出現的很多。

attribute 是 gcc 的擴展功能,它不屬于標準C語言。

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

找了幾個可以修飾函數的屬性,供大家參考下。

如果希望函數可以在 main 函數前面執行,可以用 constructor 屬性,就是構造的意思。

如果希望函數可以在 main 函數之后執行,可以用 destrucotr 屬性,有點析構的意思。

網上有些介紹使用這兩個屬性來模擬 C++ 的構造函數和析構函數,說實話,這比 C++ 里面的構造和析構差遠了,用它來給程序做些初始化、回收的操作,還是可以的。

第二個,nonnull。

寫函數的時候,我們經常對函數做入參判斷,比如防止傳進來的參數是空指針,導致程序下面出現異常。

使用 nonnull 屬性,可以讓編譯器來判斷。如果傳進來的參數是 NULL,編譯的時候會提示警告,非常的人性化。

第三個,deprecated。

如果想把某個函數廢棄掉,比如在項目的后續版本中不再使用,可以使用 deprecated 屬性,加上這個屬性,如果你還是使用這個函數,編譯就會提示警告。

比如常見的 gets 函數,如果一下子把它從標準庫中刪掉,對以前的程序不夠友好,所以只能提醒。

第四個,noreturn。

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

如果在函數內部加上死循環或者退出,這樣的函數才屬于不返回。

第五個,weak,用于定義弱函數。

比如在一個文件中定義了弱函數,另一個文件完全可以重新再定義一遍,并且編譯器會自動鏈接到用戶定義的新函數上。

weak 屬性在 STM32 上面出現的很多,比如中斷函數等等。

gcc 擴展的屬性很多,打開 gcc 文檔,粗略的估算了一下,可能有百來個。

可能是C語言也發現了這些屬性好用,在最新的C23標準里面,也加入了屬性這個概念,不過用法很奇葩,使用兩個嵌套的中括號,而且目前支持的屬性也比較少。

編譯器一直都是走在標準的前面,也許在接下來的某個C語言標準中,會有更多的 gcc 屬性加入到C語言中。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11506

    瀏覽量

    213427
  • GCC
    GCC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    25346

原文標題:gcc的attribute屬性,確實值得學習

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    \"module object has no attribute load\"這個怎么解決?

    \"module object has no attribute load\"這個怎么解決
    發表于 06-19 07:03

    cubemx+clion+gcc無法使用msh怎么解決?

    通過STM32CUMX配置RTTHREAD NANO ,用keil編譯并且移植shell之后,輸入鍵盤上下鍵無反應,而用clion+gcc編譯后(修改過啟動文件),只能打印version信息,無法顯示msh和輸入,兩者除了啟動文件以外,其余的配置基本相同,請問為啥gcc
    發表于 06-13 08:17

    使用gcc編譯成功后,如何燒錄?

    使用gcc編譯成功后,如何燒錄。 scons 命令嗎?
    發表于 04-30 07:13

    BSP36 gcc_11.3.0編譯錯誤的原因?怎么解決?

    在 Yocto 項目中構建 BSP36 時遇到 gcc_11.3.0 編譯錯誤。 詳細日志如下: [i]/usr/src/debug/gcc/11.3.0-r0/build/gcc
    發表于 03-27 08:19

    S32K312無法使用int_sram_shareable SRAM存儲數據怎么解決?

    到int_sram_no_cacheable分區__attribute__((section(“.int_sram_no_cacheable”)))gcc 關鍵字。 我想在 int_sram_shareable int_dtcm 部分
    發表于 03-27 07:16

    ubuntu24.04上安裝gcc工具鏈出現報錯怎么解決?

    虛擬機安裝的ubuntu24.04.1,默認gcc版本13,從芯來官網下載了對應的gcc版本的工具鏈,到最后編譯報錯: riscv64-unknown-linux-gnu-gcc: fatal
    發表于 03-07 12:39

    運行230-yolov8優化筆記本示例時遇到ops.scale_segments問題怎么解決?

    運行 230-yolov8 優化 示例應用程序。 遇到錯誤:屬性錯誤: module \'ultralytics.yolo.utils.ops\' has no attribute \'scale_segments\'
    發表于 03-06 06:10

    Meta組建四大專研小組,深入探索DeepSeek模型

    近日,據報道,臉書母公司Meta為了提升其大模型Llama的性能,專門成立了四個研究小組,深入探索量化巨頭幻方量化旗下的國產大模型DeepSeek的工作原理。 據悉,Meta組建的這四個小組各有側重
    的頭像 發表于 02-05 14:02 ?452次閱讀

    全球計算聯盟GCC成立,安謀科技牽頭編寫白皮書發布

    1月10日,由全球計算聯盟(簡稱“GCC”)主辦的“2025全球計算大會——全球計算聯盟啟航大會”在深圳舉行。大會期間,同步舉辦了全球計算聯盟(GCC)成立慶典,并在隨后的年度系列成果發布儀式上
    發表于 01-13 14:55 ?141次閱讀
    全球計算聯盟<b class='flag-5'>GCC</b>成立,安謀科技牽頭編寫白皮書發布

    Chart FX-使用API傳輸數據 使用Value屬性傳輸數據

    有時,向 Chart FX 傳輸數值數據最簡單方便的方法就是使用 Value 屬性。通過 Value 屬性,您可以為圖表中特定series中的某一point設置數值。 Value 屬性需要你希望自動
    的頭像 發表于 01-09 16:30 ?387次閱讀
    Chart FX-使用API傳輸數據 使用Value<b class='flag-5'>屬性</b>傳輸數據

    MSP430 GCC用戶指南

    電子發燒友網站提供《MSP430 GCC用戶指南.pdf》資料免費下載
    發表于 12-05 14:51 ?0次下載
    MSP430 <b class='flag-5'>GCC</b>用戶指南

    常用編輯器之GCC編譯器

    GCC(GNU Compiler Collection)是由GNU開發的編程語言編譯器,最初是作為GNU操作系統的編譯器編寫的。GCC是一個編譯器套件,包含很多軟件包,支持多種語言編譯。GCC的官網
    發表于 08-24 11:05

    錫焊原理解析:深入理解電子產品制造的核心工藝

    探索焊接技術在精密電子工程中的重要性和創新,從基礎元件的連接到現代焊接技術的進展,深入了解焊接材料的選擇與焊接技術的分類。本文提供了對錫焊原理的深入分析,揭示了高質量電子產品制造的關鍵因素。
    的頭像 發表于 08-12 15:03 ?1463次閱讀
    錫焊原理解析:<b class='flag-5'>深入</b>理解電子產品制造的核心工藝

    OpenAI正深入探索文本水印技術的前沿領域

    8月5日最新資訊透露,OpenAI正積極投身于文本水印技術的尖端探索,但與此同時,公司也坦誠地指出了這一創新領域所面臨的艱巨技術障礙與未解之謎。
    的頭像 發表于 08-05 12:59 ?821次閱讀
    主站蜘蛛池模板: 欧美xxxxxxxxx| baoyu污污网站入口免费 | 色综合天天综合网国产国产人 | 福利片午夜| 精品卡一卡二 卡四卡视频 精品噜噜噜噜久久久久久久久 | 成人欧美一区二区三区 | 在线视频久久 | 在线观看精品国产入口 | 欧美色吧视频在线观看 | 丁香激情六月天 | 香蕉视频在线免费播放 | 日本一区免费看 | 中文字幕亚洲综合久久2 | 国产色片| 天堂在线精品 | 天天综合天天做天天综合 | 国产免费卡1卡2卡 | 日本一区二区视频 | 色综合网天天综合色中文男男 | 久久99热精品免费观看k影院 | 九色97| 欧美黑人性受xxxx喷水 | 国产免费一级在线观看 | 四虎影院永久免费 | 91激情网 | 在线免费观看色片 | 天天搞夜夜爽 | 午夜精品久久久久久99热 | 四虎影院永久网址 | 欧洲亚洲国产精华液 | 色五丁香| 欧美婷婷色 | 午夜久久久久久网站 | a天堂资源 | 亚洲精品亚洲人成人网 | 久综合| 日韩激情淫片免费看 | 成人国产一区二区三区 | 视频一区日韩 | 国产91色综合久久免费分享 | 在线观看日本免费视频大片一区 |