ページ 1 / 1
可変長引数
Posted: 2009年4月09日(木) 13:31
by 昴
こんにちは。いつもお世話になっています。
C言語は初心者でテキストを見ながら進めています。
質問があるのですが、va_start(ap, v)は可変長引数を操作する上で必要なデータを取得するマクロとあったのですが、このマクロとはどういう意味でしょうか?
よろしくお願いします。
Re:可変長引数
Posted: 2009年4月09日(木) 13:40
by toyo
#define ~
で定義されたものをマクロといいます。
ちなみにVisualC++2008では
#define va_start _crt_va_start
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
と定義されてました。
Re:可変長引数
Posted: 2009年4月09日(木) 14:28
by hss12
マクロは
オブジェクト形式マクロと
関数形式マクロの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:可変長引数
Posted: 2009年4月09日(木) 15:44
by 昴
マクロといっても、オブジェクト形式マクロと関数形式マクロがあるのですね。
とても、勉強になりました。
お二方、解答ありがとうございました。