2010-05-13 4 views

Antwort

0

Wenn ich mich recht erinnere, entsteht der Unterschied mit einer Option, die etwas wie -X=Y erlaubt (wobei "Y" beispielsweise eine Zahl sein könnte). Der Standardwert ist, was Sie erhalten, wenn der Benutzer -X in der Befehlszeile nicht eingegeben hat. Ein impliziter Wert wird erhalten, wenn der Benutzer in der Befehlszeile -X eingibt, ohne einen Wert anzugeben.

Betrachten Sie beispielsweise gcc, das Optimierungsstufen von 0 bis 3 (IIRC) unterstützt. Wenn Sie -O überhaupt nicht angeben, wird standardmäßig -O0 angegeben (d. H. Die Optimierung ist deaktiviert). Wenn Sie -O (ohne Nummer) angeben, erhalten Sie den impliziten Wert, der -O1 entspricht. Sie können auch explizit -O1 angeben, oder Sie können -O2 oder -O3 angeben.

+0

Es muss nicht unbedingt darüber nachdenken, was der Benutzer auf der Kommandozeile angegeben. Boost's program_options verwendet 'options_descriptor' für alle seine Parser. Wenn also beispielsweise der Wert in einer Konfigurationsdatei oder einer Umgebungsvariablen angegeben wird, wird die Bibliothek nicht auf den' Default_Wert' zurückgreifen. – wilhelmtell

+0

@WilhelmTell: Ganz richtig. –

34

default_value() ist der Wert, der in der variables_map gesetzt werden, wenn der Nutzer nicht einen anderen Wert angegeben haben:

./a.out    # implies width=75 if that's the default_value for width 
./a.out --width=80 # default_value not used 

implicit_value() ist der Wert, der verwendet wird, wenn der Benutzer die Option gibt, aber ohne ein benachbartes Wert.

./a.out --width  # implies width=75 if that's the implicit_value for width 
./a.out --width=80 # implicit value not used 

Wenn Sie implicit_value verwenden dann in dem Benutzer kurze Optionen der Kommandozeilen-Optionen muß den Wert sofort nach der Option angeben:

./a.out -w80 # implicit_value not used 
./a.out -w 80 # wrong: 80 parsed as extra arg if implicit_value is defined 
Verwandte Themen