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