【发布时间】:2013-02-05 02:21:28
【问题描述】:
我在 C 程序中遇到了 getopt_long 问题。代码:
const struct option long_options[] = {
{ "help", 0, NULL, 'h' },
{ "num", 1, NULL, 'n' },
{ NULL, 0, NULL, 0 }
};
do {
next_option = getopt_long(argc, argv, short_options,
long_options, NULL);
switch(next_option) {
case 'h':
print_usage(stdout, 0);
case 'n':
printf("num %s\n", optarg);
break;
case '?':
print_usage(stderr, 1);
break;
default:
abort();
}
} while(next_option != -1);
这行得通:
./a.out --num 3
num 3
这行得通(为什么?!):
./a.out --n 3
num 3
这不是:
./a.out -n 3
num (null)
这么长的选项有效,短的有两个'-'(为什么?)而短的选项不起作用(printf 打印NULL),这是为什么?非常感谢。
【问题讨论】:
-
什么是短选项?请同时包含
short_options。 -
有趣的是你省略了最相关的一段代码;)
-
const char * const short_options = "hn";
-
如果你想得到-option而不是--option,使用getopt而不是get_long_opt
标签: c getopt getopt-long