c 可變引數列表 va list 作為引數傳遞

2021-10-08 08:00:15 字數 443 閱讀 9527

#include #include void log(int level, char *fmt, ...) 

// debug

void d( char *fmt, ...)

// info

void i(char *fmt, ...)

// warn

void w(char *fmt, ...)

// error

void e(char *fmt, ...)

在上面**中,log函式定義形式不能正確接收其他函式傳遞過來的可變引數列表,正確的log函式寫法如下,其他函式不變

void log(int level, char *fmt, va_list ap)
**中va_start巨集的作用是計算出形參fmt後面那個形參的位址,並賦值給ap;

關於可變的引數列表va list的筆記

案例 int cdecl messageboxprintf tchar szcaption,tchar szformat,va list arg ptr 定義乙個指向個數可變的引數列表指標 va start arg ptr,argn 使引數列表指標arg ptr指向函式引數列表中的第乙個可選引數,說...

va list 可變引數

什麼是變長引數?所謂含有變長引數的函式是指該函式可以接受可變數目的形參。例如我們都非常熟悉的 printf,scanf等等。2 變長引數如何實現?首先來看下面這樣乙個例子 include include include void demo char msg,else break para va ar...

C 遍歷可變引數 va list

前言 在c 中使用可變引數可沒c 中那麼方便,使用起來也很麻煩,想盡辦法搜了很多資料仍然無果,但是確有一些心得。文章 1.2.va list va start va arg va end的原理與使用 正文 一.遍歷可變引數 1.1 傳入的時候指定引數個數 void arg cnt intcnt,va...