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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

語法錯誤

當使用參數(shù)調(diào)用宏時,會將參數(shù)替換為宏主體,并與其他輸入文件一起檢查結(jié)果,以進行更多的宏調(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))

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

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

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

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

運算符優(yōu)先級問題

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

#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的運算符優(yōu)先級規(guī)則使其等效于此,而我們想要的是:

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)

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

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

吞噬分號

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

#define SKIP_SPACES(p, limit)

{ char *lim = (limit);

while (p < lim) {

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

p--; break; }}}

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

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

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

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);

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

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

    關(guān)注

    3

    文章

    4422

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    光模塊頻繁故障?避開3使用誤區(qū)就夠了

    。 避開3誤區(qū),做好規(guī)范操作和日常防護,就能降低光模塊故障率,節(jié)省維修更換成本。若有選型、養(yǎng)護疑問,歡迎評論區(qū)留言交流。
    發(fā)表于 04-28 17:37

    UPS不間斷電源選購功率,等于主機電源功率嗎?一常見的配置誤區(qū)解析

    ,卻在設(shè)備開機瞬間或高負載運行時,頻頻觸發(fā)UPS的過載警報,甚至導致意外斷電。揭示了一廣泛存在的認知誤區(qū):UPS的選購功率,是否應該簡單地等同于設(shè)備電源的額定功
    的頭像 發(fā)表于 04-22 14:00 ?86次閱讀
    UPS不間斷電源選購功率,等于主機電源功率嗎?一<b class='flag-5'>個</b>常見的配置<b class='flag-5'>誤區(qū)</b>解析

    磁環(huán)電感選型:避開那些常見誤區(qū)

    在電子產(chǎn)品的研發(fā)過程中,磁環(huán)電感雖小,選型不當卻可能引發(fā)設(shè)備發(fā)熱、嘯叫甚至無法正常工作。很多工程師在選型時,往往只關(guān)注電感量這一參數(shù),其實是一常見誤區(qū)。本文為您梳理磁環(huán)電感選型中
    的頭像 發(fā)表于 04-22 13:06 ?98次閱讀

    設(shè)備狀態(tài)監(jiān)測投了3月沒效果?先排查4實施誤區(qū)

    誤區(qū)一:把“監(jiān)測”當“診斷”典型表現(xiàn)—平臺彈出“振動超限”,維修工到現(xiàn)場仍不知道問題在哪——是軸承、齒輪還是不平衡?最終只能拆機檢查,監(jiān)測系統(tǒng)形同虛設(shè)。問題根源—在線監(jiān)測的核心作用是發(fā)現(xiàn)異常,而不是
    的頭像 發(fā)表于 04-14 17:01 ?533次閱讀
    設(shè)備狀態(tài)監(jiān)測投了3<b class='flag-5'>個</b>月沒效果?先排查<b class='flag-5'>這</b>4<b class='flag-5'>個</b>實施<b class='flag-5'>誤區(qū)</b>

    600V MOSFET替代選型的七個關(guān)鍵檢查項

    工程師的核心技能。合科泰基于功率器件研發(fā)經(jīng)驗,整理出600V高壓MOSFET替代選型中需要重點關(guān)注的七個檢查項。
    的頭像 發(fā)表于 04-14 09:49 ?1406次閱讀
    600V MOSFET替代選型的<b class='flag-5'>七個</b>關(guān)鍵檢查項

    Token中文新譯名:「符元」——一文七個維度講清Token的本質(zhì)定義

    拒絕“智元”走私語義,維拆解 Token 物理本質(zhì),定義 AI 時代唯一真名:「符元」。
    的頭像 發(fā)表于 03-27 15:23 ?786次閱讀
    Token中文新譯名:「符元」——一文<b class='flag-5'>七個</b>維度講清Token的本質(zhì)定義

    潔凈烘箱、氮氣烘箱怎么選?搞懂4疑問,避免踩坑!

    產(chǎn)品質(zhì)量,而是你沒搞懂潔凈烘箱、氮氣烘箱的適用場景和核心差異!廣東展科技作為精密烘箱十大廠家,幫你拆解4高頻疑問,手把手教你精準選型,降低生產(chǎn)成本。核心疑問解答
    的頭像 發(fā)表于 03-23 15:24 ?131次閱讀
    潔凈烘箱、氮氣烘箱怎么選?搞懂<b class='flag-5'>這</b>4<b class='flag-5'>個</b>疑問,<b class='flag-5'>避免</b>踩坑!

    變頻器應用誤區(qū)的探討

    變頻器在應用過程中確實存在一些常見的誤區(qū),這些誤區(qū)如果不加以注意和糾正,可能會對變頻器的性能、壽命以及整個系統(tǒng)的穩(wěn)定性產(chǎn)生不良影響。
    的頭像 發(fā)表于 03-13 16:46 ?357次閱讀

    導熱系數(shù)越高越好?關(guān)于導熱硅膠片的三認知誤區(qū)

    。本文將揭示三最常見的認知偏差,幫助您做出更明智的選擇。 誤區(qū)一:導熱系數(shù)越高,散熱效果就一定越好 這可能是最具迷惑性的誤區(qū)。理論上,導熱系數(shù)越高,材料傳導熱量的能力越強。然而在實際應用中,散熱
    發(fā)表于 03-12 13:49

    運動控制伺服閉環(huán)PID參數(shù)調(diào)整的誤區(qū)

    在運動控制中,伺服閉環(huán)PID參數(shù)調(diào)整往往是決定系統(tǒng)性能的關(guān)鍵。很多工程師在面對系統(tǒng)響應慢、震動或超調(diào)時,第一反應就是“繼續(xù)調(diào)P、調(diào)I、調(diào)D”。然而,往往是一最大的誤區(qū)。 單純地“死磕”PID參數(shù)
    的頭像 發(fā)表于 03-08 12:08 ?1323次閱讀
    運動控制伺服閉環(huán)PID參數(shù)調(diào)整的<b class='flag-5'>誤區(qū)</b>

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

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

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

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

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

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

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

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

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

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