區(qū)別:
站在用戶的角度思考問題,與客戶深入溝通,找到望江網(wǎng)站設(shè)計與望江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋望江地區(qū)。
1、宏會在編譯器在對源代碼進(jìn)行編譯的時候進(jìn)行簡單替換,不會進(jìn)行任何邏輯檢測,即簡單代碼復(fù)制而已。
2、宏進(jìn)行定義時不會考慮參數(shù)的類型。
3、參數(shù)宏的使用會使具有同一作用的代碼塊在目標(biāo)文件中存在多個副本,即會增長目標(biāo)文件的大小。
4、參數(shù)宏的運(yùn)行速度會比函數(shù)快,因?yàn)椴恍枰獏?shù)壓棧/出棧操作。
5、參數(shù)宏在定義時要多加小心,多加括號。
6、函數(shù)只在目標(biāo)文件中存在一處,比較節(jié)省程序空間。
7、函數(shù)的調(diào)用會牽扯到參數(shù)的傳遞,壓棧/出棧操作,速度相對較慢。
8、函數(shù)的參數(shù)存在傳值和傳地址(指針)的問題,參數(shù)宏不存在。
宏是用于編譯器處理的,他在程序編譯時,會在對應(yīng)位置展開成代碼。。,這就相當(dāng)于你在告訴編譯器,我想在這個位置加一些代碼,代碼的內(nèi)容已在宏中定義,請編譯器自己支找。。。,也就是說程序在運(yùn)行時,早已變成了對應(yīng)位置上的代碼,此時已沒有宏的概念了。。。。
而函數(shù)則是運(yùn)行時,調(diào)用。他不會在編譯時,在對應(yīng)位置上加上函數(shù)代碼,只是加上一個函數(shù)入口指針。。。從這個入口去運(yùn)行一段代碼。。。運(yùn)行完了之后回到當(dāng)前位置繼續(xù)執(zhí)行。。。。
可以簡單的認(rèn)為,宏是在編譯時上起作用,而函數(shù)是運(yùn)行時起作用。。。
上面是 宏 定義。
第一行 DEFINE...SUITE 是宏函數(shù)名,小括號里是 三個 形式參數(shù)。 定義為 下面第二行開始 含 續(xù)行號的 所有的行。 程序中出現(xiàn) DEFINE...SUITE 宏函數(shù)時,均用 它的 定義句 做字符替代。
定義句替代宏函數(shù)時,凡是有 三個形式參數(shù) 的地方,用 實(shí)際參數(shù) 做字符替代。
## 是 連接符,用于一個Token 與另 一個Token 的 連接,(Token 也可以是另外的宏,也可以不是)。
例子: 若形參_sym的實(shí)際參數(shù) 是 XYZ, 那么 _test_str_##_sym[] 變成 _test_str_XYZ[]。 這個 _test_str_XYZ 是 static const char型 數(shù)組的名字。
后面還有個 .name = _test_str_XYZ, 也是token的連接。
網(wǎng)頁名稱:c語言帶參數(shù)的宏函數(shù) c語言帶參數(shù)的宏函數(shù)怎么輸入
地址分享:http://chinadenli.net/article46/ddeeghg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)