2010-05-13 6 views

Respuesta

0

Si mal no recuerdo, la diferencia surge con una opción que permite algo como -X=Y (donde "Y" podría ser, por ejemplo, un número). El valor predeterminado es lo que obtienes si el usuario no ha ingresado un -X en la línea de comando. Un valor implícito es lo que obtiene si el usuario ingresa -X en la línea de comando sin especificar un valor.

Considere, por ejemplo, gcc, que admite niveles de optimización de 0 a 3 (IIRC). Si no especifica -O, su valor predeterminado es -O0 (es decir, la optimización está desactivada). Si especifica -O (sin número), obtiene el valor implícito, equivalente a -O1. También puede especificar -O1 explícitamente, o puede especificar -O2 o -O3.

+0

No necesariamente se refleja en lo que el usuario ha especificado en la línea de comandos. Las opciones de programa de Boost usan 'options_descriptor' para todos sus analizadores sintácticos, por lo que si, por ejemplo, el valor se especifica en un archivo de configuración o en una variable de entorno, la biblioteca no recurrirá al' valor_predeterminado'. – wilhelmtell

+0

@WilhelmTell: Muy cierto. –

34

default_value() es el valor que se pondrá en el variables_map si el usuario no ha especificado otro valor:

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

implicit_value() es el valor que se utilizará si el usuario especifica la opción pero sin un adyacentes valor.

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

Si utiliza implicit_value luego en las opciones cortas de las opciones de línea de comandos, el usuario debe especificar el valor inmediatamente después de la opción:

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