Что является различием между default_value и implicit_value в повышении:: program_options?

Это - вопрос. Почему я использовал бы implicit_value по default_value и наоборот?

Спасибо!

27
задан shaz 13 May 2010 в 19:47
поделиться

2 ответа

Если я правильно помню, разница возникает с параметром, который позволяет что-то вроде -X = Y (где «Y» может быть, например, числом). Значение по умолчанию - это то, что вы получите, если пользователь не ввел -X в командной строке. Неявное значение - это то, что вы получаете, если пользователь вводит -X в командной строке без указания значения.

Рассмотрим, например, gcc, который поддерживает уровни оптимизации от 0 до 3 (IIRC). Если вы вообще не укажете -O , по умолчанию будет установлено значение -O0 (т.е. оптимизация отключена). Если вы укажете -O (без номера), вы получите неявное значение, эквивалентное -O1 . Вы также можете указать -O1 явно или указать -O2 или -O3 .

0
ответ дан 28 November 2019 в 05:28
поделиться

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
39
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: