色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 14:29 ? 次閱讀

語(yǔ)法錯(cuò)誤

當(dāng)使用參數(shù)調(diào)用宏時(shí),會(huì)將參數(shù)替換為宏主體,并與其他輸入文件一起檢查結(jié)果,以進(jìn)行更多的宏調(diào)用,可以將部分來(lái)自宏主體和部分自變量的宏調(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),通過(guò)在宏主體中編寫(xiě)不平衡的開(kāi)放括號(hào),可以創(chuàng)建一個(gè)從宏主體內(nèi)部開(kāi)始但在宏主體外部結(jié)束的宏調(diào)用。例如,

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

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

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

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

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

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

假定其用法如下:

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

拓展開(kāi)是

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

這沒(méi)有達(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)可防止此類問(wèn)題。那么,下面是定義ceil_div的正確方法如下

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

吞噬分號(hào)

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

#define SKIP_SPACES(p, limit)

{ char *lim = (limit);

while (p < lim) {

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

p--; break; }}}

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

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

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

if (*p != 0)

SKIP_SPACES (p, lim);

else …

在if條件和else條件之間存在兩個(gè)語(yǔ)句(復(fù)合語(yǔ)句和null語(yǔ)句)使C代碼無(wú)效。

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

#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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4329

    瀏覽量

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

    關(guān)注

    30

    文章

    4780

    瀏覽量

    68538
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Micro USB接口應(yīng)避免的使用誤區(qū)

    Micro USB接口在使用中應(yīng)避免以下幾個(gè)誤區(qū): 一、插拔不當(dāng) 暴力插拔 :避免直接用手扯著連接插頭的電線拉扯或用力拔出。這種暴力的插拔方式可能導(dǎo)致Micro USB接口的插板損壞,甚至導(dǎo)致接口
    的頭像 發(fā)表于 11-27 10:14 ?228次閱讀

    單片機(jī)方案開(kāi)發(fā)-分享七個(gè)常用的外圍電路設(shè)計(jì)

    在電子產(chǎn)品電路開(kāi)發(fā)設(shè)計(jì)中,外圍電路設(shè)計(jì)是連接主控芯片與外部世界的關(guān)鍵橋梁,它直接影響著整個(gè)產(chǎn)品的性能、穩(wěn)定性及功耗。今天,今天英銳恩科技的技術(shù)小編跟大家分享七個(gè)常用的外圍電路設(shè)計(jì),助電子工程師們
    發(fā)表于 09-24 15:59

    放大器OPA548的七個(gè)針腳與電源和負(fù)載是怎么接線的?

    請(qǐng)問(wèn):放大器OPA548的七個(gè)針腳與電源和負(fù)載是怎么接線的?
    發(fā)表于 09-23 08:19

    段數(shù)碼管怎么判斷共陰共陽(yáng)

    段數(shù)碼管是一種常見(jiàn)的顯示設(shè)備,用于顯示數(shù)字和字母。它由七個(gè)發(fā)光二極管(LED)組成,每個(gè)LED可以獨(dú)立控制,以形成不同的數(shù)字和字母。段數(shù)碼管有兩種類型:共陰和共陽(yáng)。這兩種類型的數(shù)碼管在電路連接
    的頭像 發(fā)表于 08-28 16:17 ?1489次閱讀

    NE5534導(dǎo)入到Pspice只有七個(gè)腳,且按照生成的.lib文件對(duì)應(yīng)的管腳連接的電路仿真出錯(cuò)怎么解決?

    NE5534導(dǎo)入到Pspice只有七個(gè)腳 且按照生成的.lib文件對(duì)應(yīng)的管腳連接的電路仿真出錯(cuò) 求解NE5534的準(zhǔn)確pspice模型
    發(fā)表于 08-15 08:10

    必看!光伏并網(wǎng)逆變器的3個(gè)典型認(rèn)識(shí)誤區(qū)

    必看!光伏并網(wǎng)逆變器的3個(gè)典型認(rèn)識(shí)誤區(qū)-古瑞瓦特 逆變器作為光伏系統(tǒng)的中樞控制器,對(duì)整個(gè)系統(tǒng)的運(yùn)行和產(chǎn)出起到關(guān)鍵作用。當(dāng)系統(tǒng)出現(xiàn)待機(jī)、停機(jī)、告警、故障、發(fā)電量未達(dá)預(yù)期、數(shù)據(jù)監(jiān)控中斷等問(wèn)題時(shí),運(yùn)維人員
    的頭像 發(fā)表于 07-11 16:32 ?965次閱讀
    必看!光伏并網(wǎng)逆變器的3<b class='flag-5'>個(gè)</b>典型認(rèn)識(shí)<b class='flag-5'>誤區(qū)</b>

    家用路由器使用中的誤區(qū)和解決方案

    家用路由器在使用過(guò)程中,用戶往往容易陷入一些誤區(qū),如忽視設(shè)置、過(guò)度使用無(wú)線信號(hào)、不重視網(wǎng)絡(luò)安全以及忽視保養(yǎng)維護(hù)等。這些誤區(qū)不僅可能影響網(wǎng)絡(luò)的速度和穩(wěn)定性,還可能帶來(lái)安全隱患。因此,了解并避免這些
    的頭像 發(fā)表于 04-17 11:17 ?388次閱讀

    如何避免工業(yè)級(jí)路由器使用誤區(qū),提高網(wǎng)絡(luò)效率

    工業(yè)級(jí)路由器在工業(yè)自動(dòng)化、物聯(lián)網(wǎng)等領(lǐng)域發(fā)揮著至關(guān)重要的作用。然而,由于其應(yīng)用環(huán)境的特殊性,使用過(guò)程中容易出現(xiàn)一些誤區(qū),導(dǎo)致網(wǎng)絡(luò)效率低下。本文將針對(duì)這些誤區(qū),提出相應(yīng)的解決方案,幫助讀者避免使用
    的頭像 發(fā)表于 04-12 14:15 ?278次閱讀

    貼片電容使用的四個(gè)誤區(qū)

    貼片電容是一種常用的電子元件,具有優(yōu)異的性能和可靠性,在各類電路中得到廣泛應(yīng)用。貼片電容在電子電路中起著至關(guān)重要的作用,但在使用過(guò)程中,存在一些常見(jiàn)的誤區(qū)。以下是四個(gè)主要的誤區(qū)誤區(qū)
    的頭像 發(fā)表于 04-12 11:32 ?418次閱讀
    貼片電容使用的四<b class='flag-5'>個(gè)</b><b class='flag-5'>誤區(qū)</b>

    華為MWC2024榮膺項(xiàng)GLOMO大獎(jiǎng),創(chuàng)新驅(qū)動(dòng)移動(dòng)通信行業(yè)發(fā)展

    華為在近期舉辦的MWC 2024會(huì)議上,獲得了七個(gè)GLOMO大獎(jiǎng)。GLOMO大獎(jiǎng)作為手機(jī)通訊行業(yè)最著名的獎(jiǎng)項(xiàng),經(jīng)過(guò)業(yè)內(nèi)頂尖專家們的嚴(yán)格評(píng)審,賦予了華為終端產(chǎn)業(yè)最高的榮譽(yù)。
    的頭像 發(fā)表于 03-05 14:49 ?942次閱讀

    路由器代理商如何避免常見(jiàn)的誤區(qū)

    作為路由器代理商,要成功在競(jìng)爭(zhēng)激烈的市場(chǎng)環(huán)境中立足,需對(duì)常見(jiàn)誤區(qū)保持清醒認(rèn)識(shí),并制定相應(yīng)策略避免。從產(chǎn)品定位、渠道選擇和營(yíng)銷(xiāo)策略等方面剖析,為可持續(xù)發(fā)展提供指導(dǎo)。
    的頭像 發(fā)表于 03-03 16:51 ?429次閱讀

    分布式控制系統(tǒng)的七個(gè)功能和應(yīng)用

    分布式控制系統(tǒng)的七個(gè)功能和應(yīng)用? 分布式控制系統(tǒng)是一種由多個(gè)獨(dú)立的控制單元組成的系統(tǒng),每個(gè)控制單元負(fù)責(zé)系統(tǒng)中的一部分功能。它具有分散的、自治的特性,可以提高系統(tǒng)的可靠性、靈活性和可擴(kuò)展性。分布式控制
    的頭像 發(fā)表于 02-01 10:51 ?1369次閱讀

    微控制器的七個(gè)串行接口

    我們將簡(jiǎn)要介紹七個(gè)串行接口:SIO、UART、SSP(SPI)、I2C、CAN、USB和EtherMAC。雖然每個(gè)接口都有幾個(gè)不同的操作模式,但我們只介紹一個(gè)典型的模式。
    的頭像 發(fā)表于 01-11 09:30 ?2926次閱讀
    微控制器的<b class='flag-5'>七個(gè)</b>串行接口

    低功耗設(shè)計(jì)的幾個(gè)誤區(qū)分享

    誤區(qū)一:我們系統(tǒng)是220V供電,就不用在乎功耗問(wèn)題了 點(diǎn)評(píng):低功耗設(shè)計(jì)并不僅僅是為了省電,更多的好處在于降低了電源模塊及散熱系統(tǒng)的成本、由于電流的減小也減少了電磁輻射和熱噪聲的干擾。隨著設(shè)備
    發(fā)表于 01-09 08:04

    軸機(jī)械臂,以精準(zhǔn)力控實(shí)現(xiàn)柔性拋光打磨!

    集推出軸都帶有扭矩傳感器的柔性機(jī)械臂,通過(guò)類人類觸覺(jué)、力位控制策略與直觀易用的打磨app,實(shí)現(xiàn)均勻一致的打磨效果,打破“被動(dòng)柔順”方案的不可控性與精度限制,使表面精加工技術(shù)效率和精度大幅提升
    的頭像 發(fā)表于 01-03 13:36 ?623次閱讀
    <b class='flag-5'>宏</b>集<b class='flag-5'>七</b>軸機(jī)械臂,以精準(zhǔn)力控實(shí)現(xiàn)柔性拋光打磨!
    主站蜘蛛池模板: 办公室里呻吟的丰满老师电影| 俄罗斯mm| 久久AV国产麻豆HD真实| 热久久伊大人香蕉网老师| 中文字幕本庄优花喂奶| 国产永久免费高清在线观看| 秋霞电影在线观看午夜伦| 欧美国产日韩久久久| 中文字幕国产在线观看| 精品午夜寂寞影院在线观看| 亚洲国产高清视频在线观看| 国产精品成人免费观看| 双性被疯狂灌满精NP| 高清大胆欧美videossexo| 秋霞av伦理片在线观看| beeg日本老师按摩| 欧亚一卡二卡日本一卡二卡| 99爱在线精品视频免费观看9| 久久热在线视频精品店| 伊人色啪啪天天综合婷婷| 九九热精品在线| 中国欧美日韩一区二区三区| 狠很橹快播| 亚洲中文字幕手机版| 国产午夜精品一区二区三区 | 黃色带三级a级| 中文无码在线观| 精品无码久久久久久久动漫| av亚洲色天堂2017| 手机在线观看毛片| 久久久这里有精品999| xart欧美一区在线播放| 帅哥操帅哥| 国模精品一区二区三区视频| 一边摸一边桶一边脱免费| 绝色娇嫩美人妻老师| 98久久人妻少妇激情啪啪| 日本亚洲精品色婷婷在线影院| 成人a视频在线观看| 亚洲精品喷白浆在线观看| 精品国产手机视频在在线|