2014年7月1日 星期二

C 語言不定參數



不定參數顧名思義,傳入函式的參數是不固定的。
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 歸零
參考資料

沒有留言:

張貼留言