Я разрабатываю собственную версию getopt () в сборке и пытаюсь обернуть мою голову вокруг этого фрагмента , в частности строки 476
if (argc < 1)
return -1;
Как обычное соглашение о вызовахбыло бы что-то вроде этого;
int c = getopt( argc, argv, "vm:drx:");
и предполагая, что программист ничего не делал с argc до этого, единственная причина, по которой я могу думать, это то, что это какой-то вариант Linux, возможно, не POSIX-совместимыйне будет передавать argv [0] путь и имя приложения. Следовательно, argc может быть нулем. Есть ли какое-либо доверие к этой гипотезе?
Из 12 раз, когда эта переменная используется в этой процедуре, она только когда-либо утверждается или копируется, никогда не модифицируется и вообще не упоминается на двух уровнях процедуры до этого.