va_arg
可変引数関数で渡される引数の数よりも少ない回数を呼び出すと、未定義の動作になりますか?
例えば:
#include <stdarg.h>
void foo(unsigned n, ...) {
va_list ap;
int bar = 0;
va_start(ap, n);
if (n) bar = va_arg(ap,int);
// Do something with bar
}
int main() {
foo(2, 3, 4);
return 0;
}
そのプログラムは未定義の動作を引き起こしますか?