Функция взята отсюда: http://v6shell.org/history/if.c
Или с подсветкой синтаксиса: http://pastebin.com/bj0Hvfrw
char *nxtarg() {
if (ap>ac) return(0*ap++);
return(av[ap++]);
}
Это функция, которая возвращает следующий аргумент. ac — количество аргументов в argv, а ap — индекс текущего аргумента.
Так что думаю с if ( ap > ac )
проверяем, есть ли еще аргументы. И вот мой вопрос:
Зачем увеличивать ap [ return( 0 * ap++ ) ], если ap уже больше, чем ac, и, следовательно, аргументов больше нет?
Я бы просто вернул (0). Какие проблемы возникнут, если я просто верну (0)? Можете ли вы привести пример?
Обратите внимание, что это старый K&R-C.
ap
будет другим, когдаnextarg
возвращает 0 или нет, и код вызывающей стороны также должен быть другим. Они хотят уменьшитьap
в случае любого нежелательного результата. 05.01.2015