Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 增压程序选项:相同值的多个选项_C++_Boost_Boost Program Options - Fatal编程技术网

C++ 增压程序选项:相同值的多个选项

C++ 增压程序选项:相同值的多个选项,c++,boost,boost-program-options,C++,Boost,Boost Program Options,我正在尝试使用boost::program\u options获取输入选项 我希望有两个选项源,一个来自命令行,另一个来自文件,但我也希望同一个值有不同的选项名称 commandLine.add_options() ("dim,d", po::value<int>(&dimension), "Problem dimension") ("adv", po::value<bool>(&adv_enabled), "Enable/Disable advect

我正在尝试使用
boost::program\u options
获取输入选项

我希望有两个选项源,一个来自命令行,另一个来自文件,但我也希望同一个值有不同的选项名称

commandLine.add_options()
 ("dim,d", po::value<int>(&dimension), "Problem dimension")
 ("adv", po::value<bool>(&adv_enabled), "Enable/Disable advection term {1|0}")
 ("div", po::value<bool>(&div_enabled), "Enable/Disable divergance term {1|0}")

file_options.add_options()
 ("dimension",po::value<int>(&dimension), "Set Problem dimension")
 ("enable.advection", po::value<bool>(&adv_enabled), "Enable/Disable advection")
 ("enable.divergance", po::value<bool>(&div_enabled), "Enable/Disable divergance")
commandLine.add_options()
(“尺寸,d”,采购订单::价值和尺寸,“问题尺寸”)
(“adv”,po::value(&adv_enabled),“启用/禁用平流项{1 | 0}”)
(“div”,po::value(&div_enabled),“Enable/Disable diviance term{1 | 0}”)
文件\u选项。添加\u选项()
(“维度”,采购订单::值(&维度),“设置问题维度”)
(“启用.平流”,po::value(&adv_enabled),“启用/禁用平流”)
(“启用.divergance”,po::value(&div_enabled),“启用/禁用divergance”)
在这里,我想在命令行中使用较短的版本,在文件中使用分组的版本


有没有一种方法可以将变量传递给这两个变量,或者我应该用代码解析它们?

文档中的答案非常简单:

当然,需要将命令行和配置文件中的值组合起来。例如,命令行上指定的优化级别应覆盖配置文件中的值。另一方面,应该组合include路径

。。。如果在命令行和配置文件中都指定了相同的值,会发生什么情况?通常,首选先存储的值。这就是“-optimization”选项所发生的情况。对于“合成”选项,如“包含文件”,将合并这些值。


您可以添加在命令行和配置中重复的选项,如果它是非合并选项,则首选使用
po::store()

首先调用的选项看起来命令行选项值将被文件选项值覆盖。这就是你想要的吗?您尝试执行了吗?我想用命令行选项覆盖文件选项,但它没有执行我想要的操作。我测试运行代码,如果我用命令行更改了dimension,它将不会更新该值。