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

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

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

3天內不再提示

如何才能避免【宏】的這七個誤區

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 14:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

語法錯誤

當使用參數調用宏時,會將參數替換為宏主體,并與其他輸入文件一起檢查結果,以進行更多的宏調用,可以將部分來自宏主體和部分自變量的宏調用組合在一起。例如,

#define twice(x) (2*(x))

#define call_with_1(x) x(1)

call_with_1 (twice)

//x=1

→ twice(1)

→ (2*(1))

宏定義不必帶有括號,通過在宏主體中編寫不平衡的開放括號,可以創建一個從宏主體內部開始但在宏主體外部結束的宏調用。例如,

#define strange(file) fprintf (file, "%s %d",

strange(stderr) p, 35)
→ fprintf (stderr, "%s %d", p, 35)

組合宏調用的功能可能會很有用,但是在宏主體中使用不平衡的開放括號只會造成混淆,應該避免。

運算符優先級問題

在大多數宏定義示例中,每次出現的宏參數名稱都帶有括號,并且另一對括號通常會包圍整個宏定義,這是編寫宏最好的方式。舉個例子

#define ceil_div(x, y) (x + y - 1) / y

假定其用法如下:

a = ceil_div(b&c,sizeof(int));

拓展開是

a =(b&c + sizeof(int)-1)/ sizeof(int);

這沒有達到我們的預期,C的運算符優先級規則使其等效于此,而我們想要的是:

a =(((b&c)+ sizeof(int)-1))/ sizeof(int);

如果我們將宏定義為

#define ceil_div(x,y)((x)+(y)-1)/(y)

可能導致另一種情況,sizeof ceil_div(1,2)是一個C表達式,可以計算ceil_div(1,2)類型的大小,它擴展為:

sizeof((1)+(2)-1)/(2)

這將采用整數的大小并將其除以2,而除法包含在內部的sizeof之外。所以整個宏定義的括號可防止此類問題。那么,下面是定義ceil_div的正確方法如下

#define ceil_div(x,y)((((x)+(y)-1)/(y))

吞噬分號

通常需要定義一個擴展為復合語句的宏。例如,考慮以下宏,該宏跨空格字符前進一個指針(參數p表示在何處查找):

#define SKIP_SPACES(p, limit)

{ char *lim = (limit);

while (p < lim) {

if (*p++ != ' ') {

p--; break; }}}

該宏定義必須是單個邏輯行,嚴格來說,該調用擴展為復合語句,這是一個完整的語句,不需要用分號結束。

但是,由于它看起來像函數調用,因此,如果可以像使用函數調用一樣使用它,則可以最大程度地減少混亂,然后再寫一個分號,就像在SKIP_SPACES(p,lim)中一樣。

這可能會在else語句之前出問題,因為分號實際上是空語句。假設你寫

if (*p ?。?0)

SKIP_SPACES (p, lim);

else …

在if條件和else條件之間存在兩個語句(復合語句和null語句)使C代碼無效。

怎么解決?我們可以使用do…while語句更改宏SKIP_SPACES的定義以解決此問題。方法如下:

#define SKIP_SPACES(p, limit)

do { char *lim = (limit);

while (p < lim) {

if (*p++ ?。?' ') {

p--; break; }}}

while (0)

SKIP_SPACES (p, lim);擴展為

do {…} while (0);

這是一個陳述,循環僅執行一次,而且大多數編譯器不會為此生成任何額外的代碼。

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

    關注

    3

    文章

    4417

    瀏覽量

    67504
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    微科技攜手懷柔實驗室共同設立半導體合資公司

    2026年3月3日,由微科技(證券代碼:688711)攜手懷柔實驗室共同設立的合資公司——北京微懷實半導體有限公司正式宣告成立。標志著雙方在推動碳化硅功率器件產業化方面邁出了關鍵一步,更是
    的頭像 發表于 03-05 16:35 ?386次閱讀

    澎湃微電子周年慶典圓滿落幕

    年前,我們懷揣著微光般的夢想,在未知的芯海中揚帆起航。載春秋,并非坦途,而是由無數個披星戴月的夜晚、無數次推倒重來的決絕、以及數不清的挑戰與突圍交織而成。
    的頭像 發表于 02-28 14:48 ?299次閱讀

    廣東展的快速溫變箱 vs 冷熱沖擊箱:原理差異與適用工況如何界定?

    快速溫變箱與冷熱沖擊箱在原理、適用場景及測試目的上存在顯著差異,選型需結合實際工況精準選擇,避免誤區。
    的頭像 發表于 02-27 09:39 ?75次閱讀
    廣東<b class='flag-5'>宏</b>展的快速溫變箱 vs 冷熱沖擊箱:原理差異與適用工況如何界定?

    在并聯使用MOS存在一些問題,要怎樣做才能避免這些問題?

    在并聯使用MOS存在一些問題,那我們要怎樣做才能避免這些問題? 首先,器件的一致性一定要好。 在功率MOSFET多管并聯時,器件內部參數的微小差異就會引起并聯各支路電流的不平衡而導致單管過流損壞。 其次是功率。如果功率高于25%,MOS發熱嚴重,性能會急劇下降,因此在設計
    發表于 12-10 08:19

    取決無鉛焊接互連可靠性的七個因素

    要比錫鉛更可靠。就在我們信以為真時,又有“專家”說錫鉛要比無鉛更可靠。我們到底應該相信哪一呢?這要視具體情況而定。無鉛錫膏/有鉛錫膏無鉛焊接互連可靠性是一非常復
    的頭像 發表于 10-24 17:38 ?909次閱讀
    取決無鉛焊接互連可靠性的<b class='flag-5'>七個</b>因素

    分析負載特性時,有哪些常見的錯誤或誤區?

    分析負載特性時,很多人會因 “想當然套用經驗”“忽略實際場景細節” 或 “混淆概念” 導致判斷偏差,進而讓報警閾值調整失效(如誤報、漏報)。以下是 6 最常見的錯誤 / 誤區,附錯誤表現、危害
    的頭像 發表于 10-10 17:03 ?809次閱讀

    USB3.1傳輸能用極細同軸線嗎?要注意哪些選型誤區

    極細同軸線束確實能夠用于 USB3.1 的高速傳輸,但前提是做好完整的設計與驗證工作。若能避開“線越細越好”這樣的誤區,合理平衡電氣性能、機械性能與工藝可行性,才能真正發揮極細同軸線束在小型化、高速化產品中的優勢。
    的頭像 發表于 09-26 14:28 ?1685次閱讀
    USB3.1傳輸能用極細同軸線嗎?要注意哪些選型<b class='flag-5'>誤區</b>?

    為什么不同芯片型號的串口開啟DMA編譯結果不同?

    這是STM32F103打開串口DMA的編譯結果 這是STM32G431的編譯結果: G431會有七個報錯,顯示的都是IRQn未聲明
    發表于 09-23 06:42

    5G通信網關有哪些特點

    5G通信網關作為連接5G網絡與終端設備的關鍵樞紐,融合了高速通信、智能計算與安全防護能力,其特點可歸納為以下七個核心維度。
    的頭像 發表于 09-05 18:16 ?854次閱讀

    C語言中的內聯函數與

    在C編程中,內聯函數和都用于避免函數調用的開銷并編寫可復用的邏輯部分,但它們在工作方式和安全性方面存在顯著差異。
    的頭像 發表于 07-25 15:10 ?1915次閱讀
    C語言中的內聯函數與<b class='flag-5'>宏</b>

    成功使用工業化超聲波清洗設備的七個實用技巧

    成功使用工業化超聲波清洗設備的七個實用技巧工業化超聲波清洗設備在現代制造業中起到至關重要的作用,但要充分發揮它們的效能,需要掌握一些實用技巧。本文將為您介紹成功使用工業化超聲波清洗設備的七個實用技巧
    的頭像 發表于 06-25 17:33 ?654次閱讀
    成功使用工業化超聲波清洗設備的<b class='flag-5'>七個</b>實用技巧

    避免踩坑!汽車配件氣密檢測設備的常見誤區與解決方案

    汽車配件氣密性檢測主要是把控質量和安全重點,如何避免因測試方法或環境控制不當導致檢測結果偏差。
    的頭像 發表于 05-22 15:09 ?553次閱讀
    <b class='flag-5'>避免</b>踩坑!汽車配件氣密檢測設備的常見<b class='flag-5'>誤區</b>與解決方案

    使用集TELE NA003-M64繼電器,避免光伏發電系統的異常電流饋入電網

    如何避免光伏發電因不穩定而損害電網?使用集NA003-M64電力保護器即可幫您監測電流,實現電網和系統保護!
    的頭像 發表于 05-22 11:08 ?725次閱讀
    使用<b class='flag-5'>宏</b>集TELE NA003-M64繼電器,<b class='flag-5'>避免</b>光伏發電系統的異常電流饋入電網

    電機故障診斷常見誤區的剖析

    純分享帖,需要者可點擊附件獲取完整資料~~~*附件:電機故障診斷常見誤區的剖析.pdf (免責聲明:本文系網絡轉載,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請第一時間告知,刪除內容!)
    發表于 04-07 17:35

    避坑指南:選購電動牙刷氣密檢測儀的5致命誤區

    的“守門員”,其選購直接關乎企業成本與風險。然而,許多廠商在設備選型時常因認知偏差踩中以下5大誤區,最終付出高昂代價。誤區一:只看價格低,忽視參數匹配問題:部分廠商為節省
    的頭像 發表于 03-25 15:44 ?624次閱讀
    避坑指南:選購電動牙刷氣密檢測儀的5<b class='flag-5'>個</b>致命<b class='flag-5'>誤區</b>