如果我調用va_arg
的次數少於可變參數中傳遞的參數次數,它是未定義的行爲嗎?調用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的程序*確實會導致未定義的行爲。 –