Рассмотрим следующий фрагмент кода:
#include <stdio.h>
#include <stdarg.h>
void display(int num, ...) {
char c;
int j;
va_list ptr;
va_start(ptr,num);
for (j= 1; j <= num; j++){
c = va_arg(ptr, char);
printf("%c", c);
}
va_end(ptr);
}
int main() {
display(4, 'A', 'a', 'b', 'c');
return 0;
}
Программа выдает ошибку времени выполнения, потому что vararg автоматически переводит char в int, и я должен был использовать int в этом случае.
Что всетипы разрешены, когда я использую vararg, как узнать, какой тип использовать, и избежать таких ошибок во время выполнения.