是否可以关闭getopt_long()
中的缩写?从手册页:关闭getopt_long(optarg.h)中的缩写?
如果缩写是唯一的或者与某些定义的选项完全匹配,则可以缩写长选项名称。
我想这样做,因为我收到的一段代码的规范需要标志的完全匹配,并且有很多标志。
是否可以关闭getopt_long()
中的缩写?从手册页:关闭getopt_long(optarg.h)中的缩写?
如果缩写是唯一的或者与某些定义的选项完全匹配,则可以缩写长选项名称。
我想这样做,因为我收到的一段代码的规范需要标志的完全匹配,并且有很多标志。
Codeape,
看来没有办法禁用缩写功能。您并不是唯一希望获得此功能的人。请参阅:http://sourceware.org/bugzilla/show_bug.cgi?id=6863
不幸的是,这似乎glibc的开发者不希望的选择,因为上面“WONTFIX”就解决了链接的错误报告。你可能是出于运气这里: - \
如果使用argp_parse(),而不是getopt的()(高reccommended,BTW),您可以通过访问由用户输入的确切标志
state->argv[ state->next - 2 ]
这有点黑客,但应该工作。
这不是完美的解决方案,但你可以调用getopt_long(后检查用户给出确切ARG)(一般不超过开关)象下面这样:
if (strcmp(argv[optind-1], "--longoption") == 0)
OPTIND点下一个,你需要处理的说法。因此,您可以使用optind-1访问原始参数。
谢谢你的信息。 – Codeape 2011-03-04 06:39:29