va什么意思 va_list定義的是什么類型?
va_list定義的是什么類型?C語言參數(shù)從右到左進入堆棧。堆棧從高地址增長到低地址。因此,在堆??臻g中,參數(shù)的排列非常有序和規(guī)則。從第一個參數(shù)開始,它們根據(jù)參數(shù)的大小緊密排列。在讀取可變參數(shù)時,一般
va_list定義的是什么類型?
C語言參數(shù)從右到左進入堆棧。堆棧從高地址增長到低地址。因此,在堆棧空間中,參數(shù)的排列非常有序和規(guī)則。從第一個參數(shù)開始,它們根據(jù)參數(shù)的大小緊密排列。在讀取可變參數(shù)時,一般來說,必須至少有一個不可變參數(shù)。取最后一個不可變參數(shù)的地址,并將其相加。參數(shù)的大小是下一個變量參數(shù)的起始地址。然后根據(jù)參數(shù)的類型添加相應的位移,依次取出這些參數(shù)。這就是變參數(shù)原理。類似list的va_uu宏實際上也做同樣的事情。因此,如果您想用自定義變量參數(shù)調用vprintf,您可以自己分配一個空間,然后用要傳入的變量參數(shù)填充該空間,最后將該空間的地址轉換為VA,然后將列表傳遞給vprintf。在大多數(shù)架構中,VA_uList是一種簡單的指針類型。
使用VA_u2; XXX的宏也應該正常。雖然不能保證它可以用在其他奇怪的體系結構中,但這仍然是一句話。為什么不?一般情況下,每個參數(shù)最好調用printf一次
Vaarg、vastart、vaend和valist是用C語言實現(xiàn)可變參數(shù)的一系列宏