国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

如何得當使用C語言的特殊的用法

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2020-09-27 10:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語言有很多特殊的用法,如果這些特殊用法使用得當,會是你的代碼變得更加有健壯,更加容易維護。

比如我們在使用STM32庫的斷言(assert),你會發現官方提供了包含“__FILE__、__LINE__”的代碼。

標準外設庫位于stm32fxxx_conf.h文件:

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

HAL使能Assert:

在代碼中會看見如下代碼:

如果添加了這段斷言代碼,對于開發大型、復雜的系統,這條語句其實用處很大。每次程序運行錯誤之后,它會打印程序代碼指定的位置,方便我們在龐大的程序中很快找到錯誤的位置。

我們的系統會隨著時間的推移,不斷升級更新,也就是需要提交很多版本的可執行文件(hex、bin等)。但是,產品后期使用中,我們對某些設備進行了升級,可能忽略了一些設備(忘記升級),如果出現故障,我們怎樣才能很快找到是哪一個版本的軟件出現故障呢?

我們的系統會隨著時間的推移,不斷升級更新,也就是需要提交很多版本的可執行文件(hex、bin等)。但是,產品后期使用中,我們對某些設備進行了升級,可能忽略了一些設備(忘記升級),如果出現故障,我們怎樣才能很快找到是哪一個版本的軟件出現故障呢?

C幾種特殊標準定義

__FILE__:正在編譯文件的文件名__LINE__:正在編譯文件的行號__DATE__:編譯時刻的日期字符串 如“Sep 22 2020”__TIME__:編譯時刻的時間字符串 如”1000“__STDC__:判斷該文件是不是標準C程序

1.__FILE__編譯文件名稱

File中文意思即文件,這里的意思主要是指:正在編譯文件對應正在編譯文件的路徑和文件的名稱。

Keil版本對應的路徑是相對于工程文件而言的路徑,IAR版本路徑是相對Windows路徑。

源代碼:

charBuildFile[]=__FILE__;printf("編譯文件路徑:%s ", BuildFile);

Keil:

編譯文件路徑:Appmain.c

IAR:

編譯文件路徑:C:UsersstrongerHuangDesktop工程主目錄Appmain.c

2.__LINE__編譯文件行號上面說的是編譯的文件名,是一個字符串,而這里說的是行號,是一個整型變量,這是這兩者的區別, 比如在工程中添加源代碼:

char BuildLine = __LINE__;printf("編譯代碼所在行:%d ", BuildLine); 可以看不是數組的字符串,打印信息: 編譯代碼所在行:44 一般情況下,__FILE__是和__LINE__結合一起使用,用于打印我們代碼信息,方便快速定位代碼位置。 3.__DATE__編譯日期__DATE__日期,需要注意的是:這個日期是你在編譯時Windows系統的日期,如果對應那部分代碼之前編譯好了,后面沒有編譯,這個日期還是之前的日期,而不是后面編譯的日期。因此,如果這里用于定版本,就需要在定版本時對工程進行全部重新編譯,它才會更新至你最后編譯的日期。 代碼:

char BuildDate[] = __DATE__;printf("編譯日期:%s ", BuildDate); 輸出結果: 編譯日期:Sep 22 2017 4.__TIME__編譯時間這個和__DATE__一樣的原理,編譯時的時間,也是一個字符串。 再次提醒:用于定版本:需要重新編譯,這樣才是最后一次編譯時間。 代碼:

char BuildTime[] = __TIME__;printf("編譯時間:%s ", BuildTime); 輸出結果 編譯時間:1000 5.__STDC__標準C代碼這個標準在我們單片機嵌入式編程中運用的比較少,當要求程序嚴格遵循ANSIC標準時該標識符被賦值為1,主要是判斷我們的程序文件是不是標準C程序。 代碼:

#ifdef __STDC__ printf("標準C代碼文件 ");#else printf("非標準C代碼文件 ");#endif推薦閱讀:

責任編輯:xj

原文標題:__FILE__、__LINE__等幾種C標準用法

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

    關注

    183

    文章

    7644

    瀏覽量

    145569
  • File
    +關注

    關注

    0

    文章

    19

    瀏覽量

    14700
  • Line
    +關注

    關注

    0

    文章

    27

    瀏覽量

    12143

原文標題:__FILE__、__LINE__等幾種C標準用法

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    變頻器的特殊用法

    變頻器作為電力電子技術的重要應用設備,其核心功能是通過改變電源頻率實現對電機轉速的精確控制。然而在實際工業場景和創意應用中,工程師們早已突破傳統認知,開發出一系列令人驚嘆的特殊用法。這些創新實踐不僅拓展了變頻器的應用邊界,更展現了電力電子技術的無限可能。
    的頭像 發表于 03-03 17:08 ?444次閱讀

    C語言主要特點

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

    C語言C++的區別及聯系

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

    C語言中一些令人震驚的結構介紹

    C語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 考察點: 這個問題將作為這個測驗的一
    發表于 12-23 08:15

    C語言特性

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

    C語言和單片機C語言有什么差異

    有些擴展,及一些特殊寫法如C51擴展的 data xdata bit sbit一類的,還有一些中斷程序寫法 void int() interrput 1一類的。 2、C是一門高級語言
    發表于 11-14 07:55

    C語言的printf基本用法介紹

    中使用頻率最高的一個函數一點也不為過,每個C語言程序員都應該掌握 printf 的用法,這是最基本的技能。 不過 printf 的用法比較靈活,也比較復雜,初學者知識儲備不足,不能一
    發表于 11-12 07:04

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

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

    提高篇——C語言核心技術(中文版)

    該資料是“C編程語言”和“C語言鏈接庫”的完整參考手冊。這本書的目的是提供一本方便、可靠的手冊,輔助日常的編程工作。本書描述C
    發表于 06-13 16:39

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

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

    UIAbility組件基本用法說明

    UIAbility組件基本用法 UIAbility組件的基本用法包括:指定UIAbility的啟動頁面以及獲取UIAbility的上下文UIAbilityContext。 指定UIAbility
    發表于 05-16 06:32

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發表于 04-30 16:11 ?7次下載

    深入理解C語言C語言循環控制

    C語言編程中,循環結構是至關重要的,它可以讓程序重復執行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環,C語言提供了多種循環控制語句,如break、continue和
    的頭像 發表于 04-29 18:49 ?2037次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環控制

    C語言的歷史及程序介紹

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

    51單片機C語言學習筆記

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