Вместо getopt()
, можно также рассмотреть использование argp_parse()
(альтернативный интерфейс к той же библиотеке).
От libc руководство :
getopt
является более стандартным (короткая опция, только версия ее является частью стандарта POSIX), но использованиеargp_parse
часто легче, и для очень простых и очень сложных структур опции, потому что она делает больше грязной работы для Вас.
, Но я был всегда доволен стандартом getopt
.
N.B. GNU getopt
с getopt_long
является GNU LGPL.
Цикл while
и классический цикл for
взаимозаменяемы:
for (initializer; loop-test; counting-expression) {
…
}
initializer
while (loop-test) {
…
counting-expression
}
В языках типа C вы можете объявлять циклы for, например так:
for(; true;)
{
if(someCondition)
break;
}
В языках, где for
более строгий, бесконечные циклы могут потребовать а цикл
.
Если у вас есть фиксированная граница и шаг и не разрешается модификация переменной цикла в теле цикла, то циклы for соответствуют примитивным рекурсивным функциям.
С теоретической точки зрения это более слабые, чем обычные циклы while, например, вы не можете вычислить функцию Акермана только с такими циклами for.
Если вы можете предоставить верхнюю границу для условия в цикле while, чтобы оно стало истинным, вы можете преобразовать его в цикл for . Это показывает, что в практическом смысле нет никакой разницы, поскольку вы можете легко дать астрономически высокий предел, скажем, дольше, чем продолжительность жизни Вселенной.