99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

程序小白
認證:優質創作者
所在專題目錄 查看專題
不一樣的宏定義(C語言小知識)
函數的調用和回調(OS小知識)
C語言指針數組(C語言小知識)
C語言中函數調用與堆棧詳解
被C標準和編譯器選項給狠狠的上了一課
extern "C" 的意義?——盤一下GCC!
作者動態 更多
基于stm32采用PWM驅動伺服控制器學習筆記
05-13 15:25
基于STM32驅動TM1638學習筆記——軟件篇
04-19 12:42
基于TM1638驅動8位數碼管設計分享
02-24 11:26
RT-Thread驅動之路: Studio創建FAL分區⑤
01-02 08:30
RT-Thread驅動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

不一樣的宏定義(C語言小知識)

   好久沒開文章了,有點手生,小伙伴們周末好,今天給大家分享一下宏定義,原本以為是很簡單的小知識點,最近在別人的構架里發現看不懂了,發現了新大陸,必須拿來分享一下,首先來一下我們經常用到的宏定義,經常把常數定義成一個宏,如下:

   #define MY_FIRST_MACRO  1  //(非常簡單吧)

   接下來看看最近我在分析QF框架時的境遇吧,對于QF來講,因為他要做時間管理,所以需要一個QF_tick()處理,隨便打開了一個bsp.c如下:

  

   第一眼看上去他應該是函數吧,我們跟進去看一下定義是啥:

   

   我的天,他居然是一個宏,他居然不大寫。。。看一下后面大寫的那個家伙:

   他居然是個函數,注意他居然是個全大寫的函數,驚不驚喜意不意外,接下來我們作者為啥要這么干。

   假如你一直都是些單片機軟件,你可能會非常的迷糊,為啥要搞得這么復雜的宏,這里直接告訴你答案,因為要移植,移植,移植,到不同的硬件平臺上去,作者寫的構架是一個通用的產物,那么不光單片機能用,PC(Linux、windows)都要能用,才是他的目的。

   假如換了多年前的我,我會想那么一個平臺一個bsp包多么簡單,不用那么復雜的宏進行替換,一眼到底多清爽,十幾個平臺就會有十幾個包,修改一點配置也要多一個包,他最終會膨脹到你無法想象的數量,所以兼容這個事情雖然難,也必須要做。

   接下來我們總結一下宏,定義一個宏的目的,并不是讓你知道他是一個常量或者是一個函數、一段代碼,只是通過一個別名告訴你這段代碼是干什么用的,他的初衷并不是希望你單步跟進去看看是怎么實現的,而是讓你對這段代碼整體的功能有個大體的理解。

   宏不一定非要大寫,函數也不一定非要小寫,有些特殊的場景,我們需要忘掉那些腦袋中那些常規的套路。

   也就是說一個宏,可以是一個常量,一段代碼或者一個函數等等。第二點,宏定義用的是#define進行定義,也就是說宏定義是一個預處理命令,他最終會在真正的編譯之前幫你配置出真正需要編譯的代碼,那個唯一配置的包。

   最終作者希望達到的效果是,不管你有多少款板子,多少種配置,基于一個通用的SDK源碼包,通過簡單的宏定義命令就可以組織出一個你想要的工程。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 7
收藏 7
關注 151
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 国产永久伊人影院 | 午夜国产在线观看 | 爽妇网国产精品 | 91丨porny丨最新 | 国产黄色麻豆视频 | 午夜影院免费视频 | 精品91在线视频 | 国产成人在线高清 | 久久国产中文字幕 | 国产精品福利一区 | 天天插天天色 | 国产精品91在线观看 | 最近免费日本视频在线 | 亚洲综合憿情五月丁香五月网 | 四虎影院最新 | 延禧攻略在线 | 狂野欧美激情性XXXX按摩 | 国产欧美亚洲精品 | 一区二区三区视频免费 | VA在线看国产免费 | 好男人在线视频 | 玖玖精品 | 欧洲美女粗暴牲交视频免费 | 欧美成亚洲 | 人人爽av| 最近的2019中文字幕免费 | 亚洲成人免费看 | 国产实拍会所女技师在线观看 | 日本羞羞裸色私人影院 | 亚洲精品一二三四五区 | 天天躁日日躁狠狠躁2021a1 | 刀光枪影免费版 | 亚洲一区二区在线免费视频 | 97免费视频在线观看 | av网页观看 | 成人亚洲免费视频 | AV老司机Av天堂| 天天干网| 综合色天天鬼久久鬼色 | www.操操操| 国产又粗又大又黄AA片爱豆 |