Передача аргумента переменной длины в функцию без проверки длины? - PullRequest
1 голос
/ 21 августа 2011

Могу ли я передать аргумент переменной длины в функцию без проверки его длины! То есть я могу создать список или что-то еще и передать его в функцию аргумента переменной длины. Я знаю, что мы можем использовать va_list для реализации функции; Но сейчас, Мы получаем список аргументов, и нам нужно посчитать длину, а затем, возможно, нам следует определить количество переменных , и передать их Можем ли мы сделать это более удобным?

1 Ответ

1 голос
/ 21 августа 2011

Вы всегда можете добавить специальный аргумент «маркер» в конце списка, указывающий, что он завершен, например NULL

char **args = { "one", "two", NULL }
function( args );
...
void function ( char **args ) {
  char *p;
  int i = 0;
  p = args[i];
  while( p != NULL) {
    ...
    i++;
    p = args[i];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...