Я пытаюсь реализовать переменную функцию. Я искал в Интернете и в итоге обнаружил, что большинство примеров обрабатывают только один тип аргументов (например, вычисление среднего числа многих целых). В моем случае тип аргумента не является фиксированным. Он может включать char *, int или оба одновременно. Вот код, с которым я закончил:
void insertInto(int dummy, ... ) {
int i = dummy;
va_list marker;
va_start( marker, dummy ); /* Initialize variable arguments. */
while( i != -1 ) {
cout<<"arg "<<i<<endl;
/* Do something with i or c here */
i = va_arg( marker, int);
//c = va_arg( marker, char*);
}
va_end( marker ); /* Reset variable arguments. */
Теперь это будет работать нормально, если бы мне приходилось иметь дело только с целыми числами, но, как вы видите, у меня есть переменная char * c в комментариях, которую я хотел бы использовать в случае, если аргумент является char *.
Итак, вопрос в том, как мне обработать возвращаемое значение va_arg, не зная, является ли оно int или char *?