2010-11-30 11 views
2

Ich habe gerade beide Funktionen kennengelernt. Habe im Internet nach ihrer Verwendung gesucht. Eine Sache gefunden, die sehr wichtig ist, um die Eingabe der Befehlszeilenoption zu analysieren, aber nicht diskutiert.getopt_long()/getopt() mit duplizierter Optionseingabe

Ist ein solcher Fall, wenn doppelte Optionen eingegeben werden, können beide Funktionen nichts tun, um damit umzugehen. Ich habe mich gefragt, ob es irgendeine lib-Funktion gibt, die man dafür verwenden könnte.

Wenn ich selbst damit umgehen muss. Die Art in meiner Meinung ist, kurze Option in ein Array zu sammeln und identische im Array zu finden.

Jeder bessere Weg, es zu tun?

Antwort

2

Wenn Sie etwas Besonderes mit doppelten Optionen tun möchten, Sie können Status in der Option behandeln Code verwalten.

So etwas wie -v|--verbose kann für zusätzliche verboseness wiederholt werden, und die vebosity Behandlungscode ist

// initialize 
int verbose_level=0 

// in the getopt case for -v 
    verbose_level++; 

(für Optionen, die mit Argumenten wiederholt werden können, die sollten alle verwendet werden, um eine Liste laden oder einige eine solche).

Wenn Sie

etwas Besonderes tun, nur
// in the case 
    verbose_level = 1; 

und wenn Sie wiederholt für die Beantwortung

// in the case 
    if (verbose_level) { 
    // handle this case as an error... 
} 
+0

Hallo, Dank erkennen wollen jedes Mal den Wert gesetzt, nicht wiederholt wollen! – tao

+1

Was ich meinte, ist, wenn man den folgenden Befehl eingibt:> Appexec.exe --same-option --same-option. In diesem Fall sollte das Optionshandling Fehlerinformationen für den Benutzer anzeigen und beenden. Ich denke, es gibt keine solche lib-API, um den Fall zu behandeln. Es muss von selbst gemacht werden. – tao