4

可以关闭缩写getopt_long()吗?从手册页:

如果缩写是唯一的或与>某些已定义选项完全匹配,则可以缩写长选项名称。

我想这样做是因为我收到的一段代码规范要求标志的全长完全匹配,并且有很多标志。

4

3 回答 3

4

代码,

似乎没有办法禁用缩写功能。您并不是唯一一个希望使用此功能的人。见: http: //sourceware.org/bugzilla/show_bug.cgi ?id=6863

不幸的是,glibc 开发人员似乎不想要该选项,因为上面链接的错误报告已通过“WONTFIX”解决。你可能在这里不走运:-\

于 2011-03-03T15:41:39.920 回答
2

如果您使用 argp_parse() 而不是 getopt() (强烈推荐,顺便说一句),您可以访问用户输入的确切标志通过

state->argv[ state->next - 2 ]

这有点骇人听闻,但应该可以。

于 2011-03-03T19:22:51.240 回答
1

这不是完美的解决方案,但您可以在调用 getopt_long()(通常在 switch 中)后检查用户给出的确切参数,如下所示:

if (strcmp(argv[optind-1], "--longoption") == 0)

optind 指出您需要处理的下一个参数。因此,您可以使用 optind-1 访问原始 arg。

于 2016-10-26T10:03:25.217 回答