Я попытался реализовать функцию, которая возвращает количество аргументов, переданных ей. Вот код:
int SIZE(int n, ...){
va_list ARGS;
va_start (ARGS, n);
int length(0);
void* current_arg;
do{
current_arg=va_arg(ARGS, void*);
length++;
}while( current_arg != nullptr);
va_end(ARGS);
return length;
}
До этого я проводил некоторые исследования, поэтому я знал, что это не сработает. И действительно, это не так: когда я передал ему два аргумента, он вернул 12!
Я все еще хотел бы понять, почему это не сработало. Я вижу два варианта:
Проблема в том, как я разработал алгоритм, который делает его неисправным.
Функция принимает гораздо больше аргументов, чем те, которые ей явно заданы.
Я давно не программирую, поэтому мне нравится экспериментировать с подобными вещами.
Не могли бы вы помочь мне выяснить, что не так с моей функцией, пожалуйста?
Спасибо