2010-05-13 49 views

回答

0

如果我没记错的话,区别与允许类似-X=Y一个选项出现(其中“Y”可能是,例如,一个数字)。如果用户没有在命令行中输入-X,则会得到默认值。如果用户在命令行上输入-X而没有指定值,则会得到一个隐含值。

考虑,例如,GCC,它支持优化级别从0到3(这个)。如果您根本没有指定-O,则默认为-O0(即优化已关闭)。如果您指定-O(没有数字),则会得到隐含值,相当于-O1。您也可以明确指定-O1,或者您可以指定-O2-O3

+0

它不一定反映在命令行上指定哪些用户上。 Boost的program_options对所有解析器都使用'options_descriptor',所以如果例如在配置文件或环境变量中指定该值,则该库不会回退到'default_value'。 – wilhelmtell 2010-05-13 20:35:04

+0

@WilhelmTell:的确如此。 – 2010-05-13 21:42:10

34

default_value()是将放在variables_map,如果用户没有指定其他值值:

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

implicit_value()是将要使用的,如果用户指定选项的值,但没有相邻值。

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

如果在命令行选项的短选项使用implicit_value那么用户必须选择后立即指定的值:

./a.out -w80 # implicit_value not used 
./a.out -w 80 # wrong: 80 parsed as extra arg if implicit_value is defined 
相关问题