C++の可変長引数関数の作り方メモ

2013年12月13日金曜日

C言語

t f B! P L
以前にJavaでの可変長引数関数の作り方を調べたけど
C++の場合も調べてみた

まず前提条件として
#include <stdarg.h>

#include <cstdarg>
をしておく

以下引数中の中の最大値を返す関数

double max(int num, ...){
 va_list args;
 double ival;
 va_start(args, num);

 double result = -DBL_MAX;

 for(int i=0; i<num; i++){
  ival = va_arg(args, double);
  if(result < ival){
   result = ival;
  }
 }

 va_end(args);

 return result;
}


まずJavaと違う点として、第一引数は明示しなければいけない
この例だとint numの部分がそれ

可変引数の数をとれない?のか難しいらしいので、第一引数に引数の数を入れるのが普通らしい

可変引数の型は引数中に無いですね
ival = va_arg(args, double);
という行のdoubleの部分でdoubleだと決まります。

int 型のmax関数を作りたければ、
ival = va_arg(args, int);
にしてやればいいわけです

va_listとかva_startとかva_endとかはテンプレでOK



Translate

このブログを検索

  • ()
  • ()
もっと見る

QooQ