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

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

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

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

#和##寫出“秀”一點(diǎn)的代碼

冬至配餃子 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2022-08-11 17:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

#和##對(duì)于大部分C語(yǔ)言玩得還算比較溜的朋友并不是很陌生,不過能把這兩個(gè)知識(shí)點(diǎn)游刃有余的應(yīng)用到所在代碼中的每個(gè)角落,似乎并沒有幾個(gè)人能夠做到,學(xué)的時(shí)候朗朗上口,而編碼的時(shí)候卻拋之腦后。

但是今天還是想重新介紹這兩個(gè)“兄弟”,希望大家能夠?qū)懗?秀"一點(diǎn)的代碼~

1、#和##基礎(chǔ)

對(duì)于這兩個(gè)語(yǔ)法的功能都比較簡(jiǎn)單,且都是在

預(yù)處理階段

做一些工作 :

#主要是將宏參數(shù)轉(zhuǎn)化為字符串

##主要是將兩個(gè)標(biāo)識(shí)符拼接成一個(gè)標(biāo)識(shí)符

沒點(diǎn)代碼似乎并不是那么形象 :

參考demo:

pYYBAGL0zluACYjNAADPq4hIo50851.png

輸出結(jié)果:

poYBAGL0zm2AVtyJAAAmcrg7hqI889.png

從結(jié)果上看來(lái)似乎#僅僅只是代替了字符串的雙引號(hào),而##卻實(shí)現(xiàn)了標(biāo)識(shí)符的拼接,這樣就為編碼標(biāo)識(shí)符的處理上能夠帶來(lái)更多的可玩性。那么,下面bug菌跟大家具體展示一下他們的常用技巧:

2、#的玩法

1、標(biāo)識(shí)符的“字符串變量"

“#”一般結(jié)合打印語(yǔ)句組合成一個(gè)宏定義,可以方便的打印相關(guān)信息,下面給個(gè)簡(jiǎn)單的實(shí)例就明白了。

poYBAGL0zoGADIkhAADSeljeKRQ791.png

輸出結(jié)果:

poYBAGL0zpiAFJ5ZAAAtJvQj9fg944.png

這樣的話就不需要總是采用雙引號(hào)來(lái)單獨(dú)書寫,同時(shí)你還可以繼續(xù)擴(kuò)展構(gòu)造更加靈活的宏。2、結(jié)合##進(jìn)行字符串拼接打印前面介紹了##進(jìn)行標(biāo)識(shí)符的拼接,那么實(shí)現(xiàn)拼接標(biāo)識(shí)符轉(zhuǎn)化為字符串看來(lái)很簡(jiǎn)單吧,于是你會(huì)編寫了如下代碼:

poYBAGL0zqqAfcaQAACGvTONuOs330.png

暗自歡喜的編譯著,然而卻得到了如下結(jié)果:

poYBAGL0zrqAYk3ZAAAWu9H8nAY063.png

得到的并不是拼接以后你想要的uart1,難道不能這么玩?當(dāng)然不是,不然也不會(huì)在這里拿出來(lái)說(shuō) 。首先要知道原因 : 進(jìn)行宏定義嵌套的情況,#或者##僅在當(dāng)前宏有效,嵌套宏中不會(huì)再次展開,既然當(dāng)前宏無(wú)法展開,那么我只能再加一級(jí)宏定義作為轉(zhuǎn)換宏進(jìn)行展開,看能不能解決該問題:

poYBAGL0zsuAKj0PAACb6YBeaEw850.png

此時(shí)輸出的結(jié)果符合我們的預(yù)期:

poYBAGL0ztyAORLuAAAamuC2BLc556.png

首先進(jìn)行第一層轉(zhuǎn)換宏替換處理掉##拼接符得到str(uart1),然后進(jìn)行字符串轉(zhuǎn)換符的處理為uart1字符串打印輸出,當(dāng)然以后你會(huì)遇到一些復(fù)雜的,不過要訣就是宏替換只會(huì)處理當(dāng)前的#或者##,否則就需要增加轉(zhuǎn)換宏提前進(jìn)行宏替換展開。所以采用##拼接出來(lái)的標(biāo)識(shí)符想要打印輸出的話,使用#進(jìn)行轉(zhuǎn)換是最直接、方便的。

3、##的玩法

##拼接符的玩法有點(diǎn)多,甚至有些還比較繞,當(dāng)然如果你游刃有余的話,這對(duì)于重構(gòu)代碼是一把“ 利器 ”。

1、在結(jié)構(gòu)體定義中的妙用

下面是bug菌經(jīng)常在項(xiàng)目代碼中用到的##結(jié)構(gòu)體定義法,也是非常多開源代碼中慣用的做法,相比常規(guī)的結(jié)構(gòu)體定義法,確實(shí)省去很多重復(fù)的代碼。比如下面的參考代碼 :

poYBAGL0zvKAQ-U1AADbGFWhUxI580.png

2、統(tǒng)一宏替換

拼接標(biāo)識(shí)符意味著符號(hào)的粒度更高,而這碎片化的符號(hào)進(jìn)行有效的管理,就可以使得符號(hào)更加具有通用性和靈活性。其實(shí)這種思想跟我們代碼模塊話是同樣的道理。來(lái)首先我們用一個(gè)兩層拼接體驗(yàn)一下:

pYYBAGL0zxWAdqXPAAHsk2LPMp4853.png

poYBAGL0zxuAed17AAALIYngyf0601.png

編寫的思路bug菌在代碼中跟大家都標(biāo)注了,相信大家一眼就能看懂,似乎并沒有想象中那么難。而在前面介紹##的基礎(chǔ)知識(shí)提過,只要轉(zhuǎn)換宏寫得夠多,你可以一層套一層,最終獲得你想要的標(biāo)識(shí)符,達(dá)到修改一個(gè)簡(jiǎn)單的宏即可替換一整套宏的效果。所以關(guān)鍵還是你要清晰的把拼接變量找出來(lái),bug菌這里僅展示了一個(gè)拼接變量,當(dāng)然多個(gè)也是同樣沒有問題的,跟我們函數(shù)傳遞參數(shù)一樣,不過這樣也會(huì)增加整個(gè)替換的復(fù)雜度,合理利用即可~


審核編輯:劉清

聲明:本文內(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145598
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1314

    瀏覽量

    106646
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    596

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    法拉電容串聯(lián)和并聯(lián)哪個(gè)好一點(diǎn)呢?

    當(dāng)你考慮給汽車電瓶并聯(lián)法拉電容(超級(jí)電容)時(shí),你可能會(huì)疑惑:串聯(lián)與并聯(lián)哪個(gè)更好?這不僅關(guān)乎性能提升,還涉及到安全和成本
    的頭像 發(fā)表于 02-04 09:17 ?212次閱讀
    法拉電容串聯(lián)和并聯(lián)哪個(gè)好<b class='flag-5'>一點(diǎn)</b>呢?

    深視課堂丨點(diǎn)激光位移傳感器SD33系列一點(diǎn)示教操作指南(第三課)

    今天,我們將起學(xué)習(xí)深視智能SD33系列激光位移傳感器的一點(diǎn)示教模式操作方法。一點(diǎn)示教模式是通過設(shè)定個(gè)閾值點(diǎn)(far),使傳感器在測(cè)量值小
    的頭像 發(fā)表于 12-22 08:17 ?378次閱讀
    深視課堂丨<b class='flag-5'>點(diǎn)</b>激光位移傳感器SD33系列<b class='flag-5'>一點(diǎn)</b>示教操作指南(第三課)

    法拉電容一點(diǎn)電沒有還能用嗎為什么

    法拉電容即使完全沒電仍可恢復(fù)使用,因其儲(chǔ)能機(jī)制為物理雙電層理論,可逆性強(qiáng),無(wú)需化學(xué)反應(yīng),長(zhǎng)期閑置后仍能恢復(fù)功能。
    的頭像 發(fā)表于 11-12 09:26 ?1642次閱讀
    法拉電容<b class='flag-5'>一點(diǎn)</b>電沒有還能用嗎為什么

    代碼格式化工具Clang-Format提升你的CW32工程質(zhì)量

    它能自動(dòng)統(tǒng)團(tuán)隊(duì)代碼風(fēng)格,讓不同開發(fā)者寫出代碼如出轍。就像 CW32 官方庫(kù)函數(shù)遵循統(tǒng)規(guī)范
    的頭像 發(fā)表于 10-09 17:43 ?1154次閱讀
    <b class='flag-5'>代碼</b>格式化工具Clang-Format提升你的CW32工程質(zhì)量

    為什么變壓器的鐵芯要接地,而且只能一點(diǎn)接地?

    變壓器作為電力系統(tǒng)中不可或缺的關(guān)鍵設(shè)備,其安全穩(wěn)定運(yùn)行對(duì)整個(gè)電網(wǎng)至關(guān)重要。在變壓器設(shè)計(jì)中,鐵芯接地是個(gè)看似簡(jiǎn)單卻蘊(yùn)含深刻原理的技術(shù)細(xì)節(jié)。為什么鐵芯必須接地?又為何只能采用一點(diǎn)接地的方式?這需要
    的頭像 發(fā)表于 09-03 07:35 ?2723次閱讀

    0.04% vs 0.1%:精度差一點(diǎn),逆變器性能差距有多大?

    本文導(dǎo)讀臺(tái)光伏逆變器損失的功率可能僅僅源于0.3%的MPPT效率差距。這個(gè)足以影響產(chǎn)品競(jìng)爭(zhēng)力的數(shù)字,可能并非算法優(yōu)劣,而在于測(cè)試源頭的精度選擇:是0.04%還是0.1%?本文通過四大測(cè)試場(chǎng)景的量化
    的頭像 發(fā)表于 08-20 11:32 ?1682次閱讀
    0.04% vs 0.1%:精度差<b class='flag-5'>一點(diǎn)</b>,逆變器性能差距有多大?

    請(qǐng)問如何使用ICP編程工具寫出序列號(hào)?

    如何使用ICP編程工具寫出序列號(hào)?
    發(fā)表于 08-19 07:01

    手機(jī)點(diǎn)一點(diǎn),電費(fèi)馬上繳!物業(yè)預(yù)付費(fèi)云平臺(tái),打通繳費(fèi) “最后米”

    水費(fèi)收取,管控,欠費(fèi)關(guān)閥; 房租物業(yè)費(fèi)收取,欠費(fèi)拉閘; 公共區(qū)域電費(fèi)分?jǐn)偸杖。?公共區(qū)域、變電所電表接入抄表、計(jì)量; 預(yù)付費(fèi)+建筑能耗、分類分項(xiàng)能源計(jì)量體化系統(tǒng); 物業(yè)/地產(chǎn)集團(tuán)集中財(cái)務(wù)管控,子物業(yè)單獨(dú)權(quán)限; 表計(jì)種類多樣,方便不同場(chǎng)景施
    的頭像 發(fā)表于 08-14 14:59 ?665次閱讀
    手機(jī)<b class='flag-5'>點(diǎn)</b><b class='flag-5'>一點(diǎn)</b>,電費(fèi)馬上繳!物業(yè)預(yù)付費(fèi)云平臺(tái),打通繳費(fèi) “最后<b class='flag-5'>一</b>米”

    手機(jī)點(diǎn)一點(diǎn)就復(fù)電!智能電表系統(tǒng)如何讓租房繳費(fèi)“零跑腿”?

    出租房智能電表系統(tǒng) 欠費(fèi)斷電 遠(yuǎn)程繳費(fèi)
    的頭像 發(fā)表于 07-03 13:49 ?1855次閱讀
    手機(jī)<b class='flag-5'>點(diǎn)</b><b class='flag-5'>一點(diǎn)</b>就復(fù)電!智能電表系統(tǒng)如何讓租房繳費(fèi)“零跑腿”?

    【經(jīng)驗(yàn)分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到代碼解析

    FPGA開發(fā),思路先行!玩FPGA板子,讀代碼是基本功!尤其對(duì)從C語(yǔ)言轉(zhuǎn)戰(zhàn)FPGA的“寶貝們”來(lái)說(shuō),適應(yīng)流水線(pipeline)編程可能需要點(diǎn)時(shí)間。上篇點(diǎn)燈代碼解讀了基礎(chǔ),而如果能親手寫出串口通訊
    的頭像 發(fā)表于 06-05 08:05 ?1106次閱讀
    【經(jīng)驗(yàn)分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到<b class='flag-5'>代碼</b>解析

    由反激電源引起的一點(diǎn)兒分析

    由反激電源引起的一點(diǎn)兒分析 開關(guān)電源分為,隔離與非隔離兩種形式,在這里主要談談隔離式開關(guān)電源的拓?fù)湫问剑綦x電源按照結(jié)構(gòu)形式不同,可分 為兩大類:正激式和反激式。反激式指在變壓器原邊導(dǎo)通時(shí)副邊截止
    發(fā)表于 05-27 16:52

    CW32模塊使用 MAX7219四合一點(diǎn)陣模塊

    四合一點(diǎn)陣顯示模塊采用MAX7219作為控制,它是種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的LED。其上包括個(gè)
    的頭像 發(fā)表于 05-12 16:04 ?996次閱讀
    CW32模塊使用 MAX7219四合<b class='flag-5'>一點(diǎn)</b>陣模塊

    AI智能體,是不是可以慢一點(diǎn)?ToB產(chǎn)業(yè)觀察

    Manus爆火之后,產(chǎn)品過度營(yíng)銷曾使其度飽受業(yè)內(nèi)爭(zhēng)議——不自研大模型,而是基于第三方大模型進(jìn)行工程化包裝,實(shí)現(xiàn)通用AI智能體(Agent)的能力。在創(chuàng)始團(tuán)隊(duì)看來(lái),極致的套殼就是種勝利
    的頭像 發(fā)表于 05-08 10:33 ?502次閱讀

    SlaveFifo 2bit sync模式下最大速度只有320Mbyte/s左右,還能更快一點(diǎn)嗎?

    也只有320Mbyte/s左右,還能更快一點(diǎn)嗎?怎么優(yōu)化。希望超過400MB/s。我只需要個(gè)讀,個(gè)寫線程即可。其他線程資源可以關(guān)閉掉該如何關(guān)閉。 是不是定要采用GPIF II那種
    發(fā)表于 05-06 14:36

    開關(guān)電源的一點(diǎn)總結(jié)

    關(guān)于開關(guān)電源,其實(shí)沒有什么好寫的,或者說(shuō),已經(jīng)有很多專門寫開關(guān)電源的書,三言兩語(yǔ)也說(shuō)不出什么來(lái)。但是以前有人問過我些問題,現(xiàn)在想起來(lái),總結(jié)下。 1,開關(guān)電源的占空比 初學(xué)者總是不明白占空比跟輸入
    發(fā)表于 04-03 13:50