2011-03-03 65 views
3

是否可以关闭getopt_long()中的缩写?从手册页:关闭getopt_long(optarg.h)中的缩写?

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

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

回答

4

Codeape,

看来没有办法禁用缩写功能。您并不是唯一希望获得此功能的人。请参阅:http://sourceware.org/bugzilla/show_bug.cgi?id=6863

不幸的是,这似乎glibc的开发者不希望的选择,因为上面“WONTFIX”就解决了链接的错误报告。你可能是出于运气这里: - \

+1

谢谢你的信息。 – Codeape 2011-03-04 06:39:29

2

如果使用argp_parse(),而不是getopt的()(高reccommended,BTW),您可以通过访问由用户输入的确切标志

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

这有点黑客,但应该工作。

0

这不是完美的解决方案,但你可以调用getopt_long(后检查用户给出确切ARG)(一般不超过开关)象下面这样:

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

OPTIND点下一个,你需要处理的说法。因此,您可以使用optind-1访问原始参数。