va_arg
을 variadic 함수에서 전달 된 인수의 수보다 적은 횟수로 호출하면 정의되지 않은 동작이 발생합니까? 예를 들어전달 된 인수의 수보다 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;
}
그 프로그램이 정의되지 않은 동작이 발생할 것인가
?
이 답변은 일종의 "반 수정"입니다. 'va_arg '에 대한 호출 횟수는 중요하지 않지만 (너무 많지 않은 한) OP 프로그램은 정의되지 않은 동작을합니다. –