宏與函數的區別:
成都創新互聯主打移動網站、網站制作、網站設計、網站改版、網絡推廣、網站維護、申請域名、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。1、宏做的是簡單的字符串替換,不受類型限制;而函數是參數的傳遞,受到參數類型的限制。
2、宏體替換宏名是在編譯之前就完成的,函數參數的調用是在函數執行時將實參傳給形參的。
3、宏參數的替換是不經過計算的,有可能會帶有副作用,所以我們在寫宏體的時候一般在能加括號的地方都不要吝嗇括號,但有時候這也不能解決副作用的問題。函數在傳參時傳的是值,不會產生副作用。
#define MAX (a,b) ((a)>(b)?(a):(b)) int main() { int a = 10; int b = 20; int ret = MAX (a++, b++); printf( "%d %d %d\n" , a, b, ret); system( "pause"); return 0; }
結果是: 11 22 21
這就是由宏所帶的副作用造成的,因為宏進行的是字符串的替換,替換后的式子是:((a++)>(b++)?(a++):(b++))。如果是函數,則傳遞的是值,就不會產生副作用。
4、因為函數是在執行期間調用的,所以可以進行調試;宏在編譯前完成的,所以不可以進行調試。
5、函數支持遞歸,宏不支持。
6、函數在調用時會產生時間和空間上的開銷;宏在調用時則沒有,因為宏進行的只是簡單的字符串替換。
7、如果使用宏比較多,宏體在展開時會產生大量的代碼,大大降低運行時間。
創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。
網站欄目:宏和函數的區別-創新互聯
標題路徑:http://vcdvsql.cn/article24/iehje.html
成都網站建設公司_創新互聯,為您提供ChatGPT、網站策劃、App設計、網站設計、Google、網站設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯