boost :: program_options中default_value和隐式值有什么区别?

问题描述 投票:28回答:3

这就是问题。为什么我在default_value上使用隐式值,反之亦然?

谢谢!

boost boost-program-options
3个回答
39
投票
variables_map

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(),则在命令行选项的简短选项中,用户必须在选项之后立即指定值:

implicit_value()

0
投票
例如,考虑gcc,它支持从0到3(IIRC)的优化级别。如果您根本不指定-X=Y,则默认为-X(即优化功能已关闭)。如果指定-X(不带数字),则将获得隐式值,该值等于-O。您也可以显式指定-O0,也可以指定-O-O1

0
投票
-O2

如果您不输入优化或听音,

./ myApp.exe

输出:

-O3

如果输入不带参数的选项example,则会丢失参数。如果输入不带参数的 desc.add_options() ("help", "produce help message") ("optimization", po::value<int>(&opt)->default_value(10), "optimization level") ("verbose,v", po::value<int>()->implicit_value(1), "enable verbosity (optionally specify level)") ("listen,l", po::value<int>(&portnum)->implicit_value(1001) ->default_value(0,"no"), "listen on a port.") ("include-path,I", po::value< vector<string> >(), "include path") ("input-file", po::value< vector<string> >(), "input file") ; ,它将给出一个隐式值1001。

© www.soinside.com 2019 - 2024. All rights reserved.