不定參數的傳遞VA_LIST的用法


VA_LIST的用法:(1)首先在函數里定義一具VA_LIST型的變量,這個變量是指向參數的指針;

(2)然后用VA_START宏初始化變量剛定義的VA_LIST變量,使其指向第一個可 變參數的地址;

(3)然后用VA_ARG返回可變的參數,VA_ARG的第二個參數是你要返回的參數 的類型(如果函數有多個可變參數的,依次調用VA_ARG獲取各個參數);

(4)最后用VA_END宏結束可變參數的獲取。使用VA_LIST應該注意的問題:   

(1、可變參數的類型和個數完全由程序代碼控制,它並不能智能地識別不同參數的個數和類型;   

(2、如果我們不需要一一詳解每個參數,只需要將可變列表拷貝至某個緩沖,可用vsprintf函數;   

(3、因為編譯器對可變參數的函數的原型檢查不夠嚴格,對編程查錯不利.不利於我們寫出高質量的代碼; 小結:可變參數的函數原理其實很簡單,而VA系列是以宏定義來定義的,實現跟堆棧相關。我們寫一個可變參數的C函數時,有利也有弊,所以在不必要的場合,我們無需用到可變參數,如果在C++里,我們應該利用C++多態性來實現可變參數的功能,盡量避免用C語言的方式來實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM