warum struct Option Array einen zusätzlichen Dummy-Eintrag muss bei der Verwendung von getopt_long

StackOverflow https://stackoverflow.com/questions/4465075

  •  11-10-2019
  •  | 
  •  

Frage

Zum Beispiel die Option Array ist:

static struct option const long_options[] =
{
  {"help", no_argument, 0, 'h'},
  {"version", no_argument, 0, 'v'},
  {0, 0, 0, 0}
};

Ist es für padding?

War es hilfreich?

Lösung

Schauen Sie sich die Manpage für getopt_long() :

int
 getopt_long(int argc, char * const *argv, const char *optstring,
     const struct option *longopts, int *longindex);

Die argc und argv Paare zeigen eine Art und Weise zu sagen, wie viele Einträge es in einem Array ist (durch explizite Zählung, obwohl seit argv[argc] == 0, gibt es auch einen Wächter dort). Die optstring zeigt kurze Argumente; die longindex ist ein Ausgabeparameter. Das Blatt nur der Zeiger longopts was bedeutet, dass die Funktion der Lage sein muss, zu sagen, wie viele Einträge in dem Array ohne Unterstützung Zahl ist (kein longoptcount Argument ist), so dass das Ende des Arrays von allen Werten gekennzeichnet ist Null - eine Sentinel Wert.

Andere Tipps

Es ist ein ‚Sentinel‘ so der Code Verarbeitung des Array weiß, wann es zu Ende gekommen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top