C++伝達不定パラメトリック関数

1018 ワード

次のマクロを使用する不定パラメータ関数を定義します.
  • va_start(ap,farg):vaを初期化するList変数ap,fargは最初のパラメータ
  • である
  • va_Arg(ap,type):typeタイプのパラメータ
  • を取得(下)する
  • va_end(ap):ap
  • の使用を終了する
    C++言語で不定パラメータ関数を記述する形式はこうです(提供タイプのパラメータが必要です):
    #include
    using namespace std; 
    
    int sum(int x,...)
    {
    	int sum2=0;
    	va_list apList;
    	va_start(apList, x);
    	for(int i=0;i

    次のマクロを使用する不定パラメータ関数を定義します.
  • va_start(ap,farg):vaを初期化するList変数ap,fargは最初のパラメータ
  • である
  • va_Arg(ap,type):typeタイプのパラメータ
  • を取得(下)する
  • va_copy(ap):パラメータリストをコピーするための
  • va_end(ap):apの使用を終了するマクロ定義は、一般的にstdarg.hにある.
  • typedef char * va_list;
    #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1)  )
    #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v)  )
    #define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t))  )
    #define va_end(ap) ( ap = (va_list)0 )
    

    注:これらのマクロ定義は、システムやプロセッサアーキテクチャによって異なります.