可変長引数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

可変長引数

#1

投稿記事 by » 16年前

こんにちは。いつもお世話になっています。
C言語は初心者でテキストを見ながら進めています。

質問があるのですが、va_start(ap, v)は可変長引数を操作する上で必要なデータを取得するマクロとあったのですが、このマクロとはどういう意味でしょうか?

よろしくお願いします。

toyo

Re:可変長引数

#2

投稿記事 by toyo » 16年前

#define ~
で定義されたものをマクロといいます。
ちなみにVisualC++2008では

#define va_start _crt_va_start
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )

と定義されてました。

hss12

Re:可変長引数

#3

投稿記事 by hss12 » 16年前

マクロは
オブジェクト形式マクロと
関数形式マクロの2種類あります。

オブジェクト形式マクロは

#define MAX 5
for(i=0; i<MAX; i++)

のように使います。
for(i=0; i<5; i++)
に置き換わります。

質問の場合は関数形式マクロですが

/*和を求めるマクロ*/
#define add(x, y) ((x)+(y))
printf("aとbの和は%d", add(a, b));

この場合
printf("aとbの和は%d", ((a)+(b)));
に置き換わります。

Re:可変長引数

#4

投稿記事 by » 16年前

マクロといっても、オブジェクト形式マクロと関数形式マクロがあるのですね。
とても、勉強になりました。
お二方、解答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る