chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何才能避免【宏】的這七個(gè)誤區(qū)

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

掃碼添加小助手

加入工程師交流群

語法錯(cuò)誤

當(dāng)使用參數(shù)調(diào)用宏時(shí),會(huì)將參數(shù)替換為宏主體,并與其他輸入文件一起檢查結(jié)果,以進(jìn)行更多的宏調(diào)用,可以將部分來自宏主體和部分自變量的宏調(diào)用組合在一起。例如,

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

#define call_with_1(x) x(1)

call_with_1 (twice)

//x=1

→ twice(1)

→ (2*(1))

宏定義不必帶有括號(hào),通過在宏主體中編寫不平衡的開放括號(hào),可以創(chuàng)建一個(gè)從宏主體內(nèi)部開始但在宏主體外部結(jié)束的宏調(diào)用。例如,

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

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

組合宏調(diào)用的功能可能會(huì)很有用,但是在宏主體中使用不平衡的開放括號(hào)只會(huì)造成混淆,應(yīng)該避免。

運(yùn)算符優(yōu)先級(jí)問題

在大多數(shù)宏定義示例中,每次出現(xiàn)的宏參數(shù)名稱都帶有括號(hào),并且另一對(duì)括號(hào)通常會(huì)包圍整個(gè)宏定義,這是編寫宏最好的方式。舉個(gè)例子

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

假定其用法如下:

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

拓展開是

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

這沒有達(dá)到我們的預(yù)期,C的運(yùn)算符優(yōu)先級(jí)規(guī)則使其等效于此,而我們想要的是:

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

如果我們將宏定義為

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

可能導(dǎo)致另一種情況,sizeof ceil_div(1,2)是一個(gè)C表達(dá)式,可以計(jì)算ceil_div(1,2)類型的大小,它擴(kuò)展為:

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

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

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

吞噬分號(hào)

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

#define SKIP_SPACES(p, limit)

{ char *lim = (limit);

while (p < lim) {

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

p--; break; }}}

該宏定義必須是單個(gè)邏輯行,嚴(yán)格來說,該調(diào)用擴(kuò)展為復(fù)合語句,這是一個(gè)完整的語句,不需要用分號(hào)結(jié)束。

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

這可能會(huì)在else語句之前出問題,因?yàn)榉痔?hào)實(shí)際上是空語句。假設(shè)你寫

if (*p ?。?0)

SKIP_SPACES (p, lim);

else …

在if條件和else條件之間存在兩個(gè)語句(復(fù)合語句和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);擴(kuò)展為

do {…} while (0);

這是一個(gè)陳述,循環(huán)僅執(zhí)行一次,而且大多數(shù)編譯器不會(huì)為此生成任何額外的代碼。

審核編輯:符乾江
聲明:本文內(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)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4416

    瀏覽量

    67452
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4965

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

    分析負(fù)載特性時(shí),有哪些常見的錯(cuò)誤或誤區(qū)?

    分析負(fù)載特性時(shí),很多人會(huì)因 “想當(dāng)然套用經(jīng)驗(yàn)”“忽略實(shí)際場(chǎng)景細(xì)節(jié)” 或 “混淆概念” 導(dǎo)致判斷偏差,進(jìn)而讓報(bào)警閾值調(diào)整失效(如誤報(bào)、漏報(bào))。以下是 6 個(gè)最常見的錯(cuò)誤 / 誤區(qū),附錯(cuò)誤表現(xiàn)、危害
    的頭像 發(fā)表于 10-10 17:03 ?792次閱讀

    USB3.1傳輸能用極細(xì)同軸線嗎?要注意哪些選型誤區(qū)?

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

    為什么不同芯片型號(hào)的串口開啟DMA編譯結(jié)果不同?

    這是STM32F103打開串口DMA的編譯結(jié)果 這是STM32G431的編譯結(jié)果: G431會(huì)有七個(gè)報(bào)錯(cuò),顯示的都是IRQn未聲明
    發(fā)表于 09-23 06:42

    步進(jìn)電機(jī)EMC整改:不過關(guān)?常見誤區(qū)你可能正在犯

    深圳南柯電子|步進(jìn)電機(jī)EMC整改:不過關(guān)?常見誤區(qū)你可能正在犯
    的頭像 發(fā)表于 09-08 09:58 ?614次閱讀

    5G通信網(wǎng)關(guān)有哪些特點(diǎn)

    5G通信網(wǎng)關(guān)作為連接5G網(wǎng)絡(luò)與終端設(shè)備的關(guān)鍵樞紐,融合了高速通信、智能計(jì)算與安全防護(hù)能力,其特點(diǎn)可歸納為以下七個(gè)核心維度。
    的頭像 發(fā)表于 09-05 18:16 ?822次閱讀

    C語言中的內(nèi)聯(lián)函數(shù)與

    在C編程中,內(nèi)聯(lián)函數(shù)和都用于避免函數(shù)調(diào)用的開銷并編寫可復(fù)用的邏輯部分,但它們?cè)诠ぷ鞣绞胶桶踩苑矫娲嬖陲@著差異。
    的頭像 發(fā)表于 07-25 15:10 ?1881次閱讀
    C語言中的內(nèi)聯(lián)函數(shù)與<b class='flag-5'>宏</b>

    成功使用工業(yè)化超聲波清洗設(shè)備的七個(gè)實(shí)用技巧

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

    避免踩坑!汽車配件氣密檢測(cè)設(shè)備的常見誤區(qū)與解決方案

    汽車配件氣密性檢測(cè)主要是把控質(zhì)量和安全重點(diǎn),如何避免因測(cè)試方法或環(huán)境控制不當(dāng)導(dǎo)致檢測(cè)結(jié)果偏差。
    的頭像 發(fā)表于 05-22 15:09 ?550次閱讀
    <b class='flag-5'>避免</b>踩坑!汽車配件氣密檢測(cè)設(shè)備的常見<b class='flag-5'>誤區(qū)</b>與解決方案

    使用集TELE NA003-M64繼電器,避免光伏發(fā)電系統(tǒng)的異常電流饋入電網(wǎng)

    如何避免光伏發(fā)電因不穩(wěn)定而損害電網(wǎng)?使用集NA003-M64電力保護(hù)器即可幫您監(jiān)測(cè)電流,實(shí)現(xiàn)電網(wǎng)和系統(tǒng)保護(hù)!
    的頭像 發(fā)表于 05-22 11:08 ?715次閱讀
    使用<b class='flag-5'>宏</b>集TELE NA003-M64繼電器,<b class='flag-5'>避免</b>光伏發(fā)電系統(tǒng)的異常電流饋入電網(wǎng)

    ESD防護(hù)設(shè)計(jì)中的10個(gè)常見誤區(qū),你中招了嗎?

    在現(xiàn)代電子產(chǎn)品中,ESD(靜電放電)防護(hù)已成為設(shè)計(jì)中不可忽視的一環(huán)。然而,即便是經(jīng)驗(yàn)豐富的工程師,也常會(huì)在ESD設(shè)計(jì)中掉進(jìn)一些看似“理所當(dāng)然”的誤區(qū)。以下總結(jié)了10個(gè)在實(shí)際設(shè)計(jì)中最常見的陷阱,看看
    的頭像 發(fā)表于 04-24 09:51 ?1007次閱讀
    ESD防護(hù)設(shè)計(jì)中的10<b class='flag-5'>個(gè)</b>常見<b class='flag-5'>誤區(qū)</b>,你中招了嗎?

    電機(jī)故障診斷常見誤區(qū)的剖析

    純分享帖,需要者可點(diǎn)擊附件獲取完整資料~~~*附件:電機(jī)故障診斷常見誤區(qū)的剖析.pdf (免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)第一時(shí)間告知,刪除內(nèi)容?。?
    發(fā)表于 04-07 17:35

    避坑指南:選購電動(dòng)牙刷氣密檢測(cè)儀的5個(gè)致命誤區(qū)

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

    濾波器接地設(shè)計(jì)有哪些常見誤區(qū)

    濾波器接地設(shè)計(jì)對(duì)電子設(shè)備EMC至關(guān)重要,需避免接地線過長(zhǎng)、殼體搭接不良、輸入輸出線平行走線、接地線過細(xì)及忽視高頻特性等誤區(qū),采用短接地線、良好搭接、分開布線、合適接地材料及優(yōu)化布局等方法提高濾波器性能。
    的頭像 發(fā)表于 02-26 17:23 ?845次閱讀
    濾波器接地設(shè)計(jì)有哪些常見<b class='flag-5'>誤區(qū)</b>?