不定參數顧名思義,傳入函式的參數是不固定的。
arguement 可多可少,且還可以不同型態,以下為一使用範例
#include <stdio.h>
#include <stdarg.h>
#include "svdpi.h"
void stim_num(int dly,...){
//=================================================
// variable macro declaration
// put the undefined input parameter
// 1. Set the first parameter "int dly"
// 2. Set other parameter by auto counting the point address
//=================================================
va_list argptr;
char *cmd_name ;
int cmd_num0 ;
int cmd_num1 ;
int cmd_num2 ;
// first data setting
va_start (argptr,dly);
// auto counting the point address
cmd_name = va_arg (argptr,char*);
cmd_num0 = va_arg (argptr,int );
cmd_num1 = va_arg (argptr,int );
cmd_num2 = va_arg (argptr,int );
va_end (argptr);
exc_execute( dly ,
cmd_name,
cmd_num0,
cmd_num1,
cmd_num2,
"NULL" );
}
C語言提供 va_list 實作不定參數的函式
macro:va_start、va_arg 、va_end
char* :va_list 的型態
- va_start 將 va_list 的指標指到第一個不定參數
- va_arg 指定型態從 va_list 取出資料並把 va_list 指標指到下一個位置
- va_end 當資料取完後把 va_list 歸零
沒有留言:
張貼留言