#define align(n) ( (sizeof(n) + 3) & 0xfffffffc )//記憶體對齊
#define va_start(ap,v) ( ap = (char *)&v + align(v) )
//根據第乙個引數的首位址和型別以及記憶體對齊規則確定第乙個可變引數的位址
#define va_arg(ap,t) ( *(t *)((ap += align(t)) - align(t)) )
#define va_end(ap) ( ap = (va_list)0 )
//把可變引數首位址置0,結束可變引數的獲取
#include #include #include "arg.h"
void myprint(int i,...)
va_end(dyn_start);
}int main(void)
C語言之可變引數函式
define crt secure no warnings include include include 包含很多可變引數的巨集的標頭檔案 include 有關於字串的函式 可以接受多個引數加法的可變引數函式 int add int num,表示可變的引數,第乙個引數為個數 va end argp...
c 語言可變引數
1 當無法列出傳遞函式的所有實參的型別和數目時,可用省略號指定參數列 void foo void foo parm list,2 函式引數的傳遞原理 函式引數是以資料結構 棧的形式訪問,從右至左入棧.eg include void fun int a,int main output 12 343 獲...
c語言可變引數
ifdef debug print info x printk x,else print info x endif 一 什麼是可變引數 我們在c語言程式設計中有時會遇到一些引數個數可變的函式,例如printf 函式,其函式原型為 int printf const char format,它除了有乙個...