假設我有一個函數,它從另一個這樣的函數傳遞可變參數(...
)或va_list
。主要邏輯是在這個函數本身(我們稱之爲f1
),但我想讓它通過va_list
到另一個函數(我們稱之爲f2
),它將確定下一個參數類型,使用va_arg
獲得它,並正確地轉換和存儲它供呼叫者使用。將va_list或指針傳遞給va_list?
將va_list傳遞給f2
是否足夠,或者是否需要將指針傳遞給va_list。除非va_list被要求是一個數組類型,否則將其位置數據存儲在對象指向的位置(而不是對象本身),我看不到如何通過值傳遞它可以允許調用函數(f1
)以'看'va_arg
所做的被調用函數的變化。
任何人都可以闡明這一點嗎?我對該標準要求的內容感興趣,而不是某些特定實現允許的內容。
同意你最後一次編輯 - 指針是要走的路(因爲OP希望對'va_list'的更改在調用函數中明確可見)。 – caf 2010-07-30 08:48:19
@caf:我不認爲你應該編輯出我對'vfprintf()'的引用,因爲它看起來像別人正在犯同樣的錯誤,並建議提問者看看現有的原型(實際上並沒有回答他的問題)。 – JeremyP 2010-07-30 09:18:59
我會說留下評論和/或投票他們然後 - 它似乎更好有正確的答案不混淆與更早的,不正確的假設... – caf 2010-07-30 12:05:33