c-GNU argp:只接受带有长选项的可选参数



我只想接受一个长形式选项的可选参数选项。

假设我用argp:的可选参数定义选项-v--verbose

static struct argp_option opt_global[] =
{
{ "verbose", 'v' , "level", OPTION_ARG_OPTIONAL,  "Increase or set the verbosity level.", -1},
...
}

我现在只想接受带有长选项形式的可选参数。

所以

--verbose=4

将接受4作为verbose的可选参数。

但对于短选项形式,不应接受可选参数:

| Command Line |  Handled as       |
|==============|===================|
| -vv          | -v -v             |
| -vx          | -v -x             |
| -v4          | -v -4             |

假设我也有-o file来定义一个输出文件:

| Command Line |  Handled as       |
|==============|===================|
| -vo file     | -v -o file        |
| -vofile      | -v -o file        |

无论如何,我仍然希望帮助输出看起来像这样:

-v, --verbose[=level]      Increase or set the verbosity level.

这在GNU argp中可行吗?

通过阅读文档和四处玩耍,我会认为";否";,但也许我错过了什么。

从argp文档(重点是我的(:

int密钥

当前选项提供给选项分析器的整数键如果键的值是可打印的ASCII字符(即isascii(键(为true(,它还指定一个短选项"-char">,其中char是带有代码键的ASCII字符。

换句话说,要设置没有缩写形式的选项,请使用非ascii字符的键。

例如,在您的情况下,它可能是:

/* This is not an ascii value so no short form */
#define OPT_VERBOSE_KEY 500
static struct argp_option opt_global[] =
{
{ "verbose", OPT_VERBOSE_KEY , "level", OPTION_ARG_OPTIONAL,  "Increase or set the verbosity level.", -1},
...
}

相关内容

  • 没有找到相关文章

最新更新