不定參數顧名思義,傳入函式的參數是不固定的。
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 歸零
沒有留言:
張貼留言