锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
浠栨湁榪欎箞鍑犱釜鎴愬憳錛?/p>
1錛?va_list鍨嬪彉閲忥細(xì)
#ifdef _M_ALPHA
typedef struct {
char *a0; /* pointer to first homed integer argument */
int offset; /* byte offset of next parameter */
} va_list;
#else
typedef char * va_list;
#endif
2錛塤INTSIZEOF 瀹忥紝鑾峰彇綾誨瀷鍗犵敤鐨勭┖闂撮暱搴︼紝鏈灝忓崰鐢ㄩ暱搴︿負(fù)int鐨勬暣鏁板嶏細(xì)
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
3錛塚A_START瀹忥紝鑾峰彇鍙彉鍙傛暟鍒楄〃鐨勭涓涓弬鏁扮殑鍦板潃錛坅p鏄被鍨嬩負(fù)va_list鐨勬寚閽堬紝v鏄彲鍙樺弬鏁版渶宸﹁竟鐨勫弬鏁幫級(jí)錛?/p>
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
4錛塚A_ARG瀹忥紝鑾峰彇鍙彉鍙傛暟鐨勫綋鍓嶅弬鏁幫紝榪斿洖鎸囧畾綾誨瀷騫跺皢鎸囬拡鎸囧悜涓嬩竴鍙傛暟錛坱鍙傛暟鎻忚堪浜?jiǎn)褰撳墠鍙傛暟鐨劸c誨瀷錛夛細(xì)
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
5錛塚A_END瀹忥紝娓呯┖va_list鍙彉鍙傛暟鍒楄〃錛?/p>
#define va_end(ap) ( ap = (va_list)0 )
VA_LIST鐨勭敤娉曪細(xì)
錛?錛夐鍏堝湪鍑芥暟閲屽畾涔変竴鍏稸A_LIST鍨嬬殑鍙橀噺錛岃繖涓彉閲忔槸鎸囧悜鍙傛暟鐨勬寚閽堬紱
錛?錛夌劧鍚庣敤VA_START瀹忓垵濮嬪寲鍙橀噺鍒氬畾涔夌殑VA_LIST鍙橀噺錛?br> 錛?錛夌劧鍚庣敤VA_ARG榪斿洖鍙彉鐨勫弬鏁幫紝VA_ARG鐨勭浜屼釜鍙傛暟鏄綘瑕佽繑鍥炵殑鍙傛暟鐨勭被鍨嬶紙濡傛灉鍑芥暟鏈夊涓彲鍙樺弬鏁扮殑錛屼緷嬈¤皟鐢╒A_ARG鑾峰彇鍚勪釜鍙傛暟錛夛紱
錛?錛夋渶鍚庣敤VA_END瀹忕粨鏉熷彲鍙樺弬鏁扮殑鑾峰彇銆?br>浣跨敤VA_LIST搴旇娉ㄦ剰鐨勯棶棰橈細(xì)
錛?錛夊彲鍙樺弬鏁扮殑綾誨瀷鍜屼釜鏁板畬鍏ㄧ敱紼嬪簭浠g爜鎺у埗,瀹冨茍涓嶈兘鏅鴻兘鍦拌瘑鍒笉鍚屽弬鏁扮殑涓暟鍜岀被鍨嬶紱
錛?錛夊鏋滄垜浠笉闇瑕佷竴涓璇﹁В姣忎釜鍙傛暟錛屽彧闇瑕佸皢鍙彉鍒楄〃鎷瘋礉鑷蟲(chóng)煇涓紦鍐詫紝鍙敤vsprintf鍑芥暟錛?br> 錛?錛夊洜涓虹紪璇戝櫒瀵瑰彲鍙樺弬鏁扮殑鍑芥暟鐨勫師鍨嬫鏌ヤ笉澶熶弗鏍?瀵圭紪紼嬫煡閿欎笉鍒?涓嶅埄浜庢垜浠啓鍑洪珮璐ㄩ噺鐨勪唬鐮侊紱
灝忕粨錛氬彲鍙樺弬鏁扮殑鍑芥暟鍘熺悊鍏跺疄寰堢畝鍗曪紝鑰孷A緋誨垪鏄互瀹忓畾涔夋潵瀹氫箟鐨勶紝瀹炵幇璺熷爢鏍堢浉鍏熾傛垜浠啓涓涓彲鍙樺弬鏁扮殑C鍑芥暟鏃訛紝鏈夊埄涔熸湁寮?鎵 浠ュ湪涓嶅繀瑕佺殑鍦哄悎錛屾垜浠棤闇鐢ㄥ埌鍙彉鍙傛暟錛屽鏋滃湪C++閲岋紝鎴戜滑搴旇鍒╃敤C++澶氭佹ф潵瀹炵幇鍙彉鍙傛暟鐨勫姛鑳斤紝灝介噺閬垮厤鐢–璇█鐨勬柟寮忔潵瀹炵幇銆?br>鏈枃鍙傝冿細(xì)http://hi.baidu.com/kang_liang/blog/item/168c9059a9a1ca2d2934f05f.html