【blog.csdn.net/lanmanck】
原型为:int getopt_long(int argc, char * const argv[],
const char *optstring,讲下optstring和logopts,例如ti的例程中有如下定义:
const Char shortOptions[] = "a:s:v:y:O:kt:lfohd:"; /* optstring,後面加':'表示該參數在使用時,後面需給設定值 */ const struct option longOptions[] = { /* name has_arg flag val */ {"audiofile", required_argument, NULL, 'a'}, /* 指向长选项名称(带两个短横线)的指针 */ {"speechfile", required_argument, NULL, 's'}, {"videofile", required_argument, NULL, 'v'}, {"display_standard", required_argument, NULL, 'y'}, {"display_output", required_argument, NULL, 'O'}, {"keyboard", no_argument, NULL, 'k'}, {"time", required_argument, NULL, 't'}, {"loop", no_argument, NULL, 'l'}, {"osd", no_argument, NULL, 'o'}, {"help", no_argument, NULL, 'h'}, {"exit", no_argument, NULL, 'e'}, {"daemonver", required_argument, NULL, 'd'}, {0, 0, 0, 0} };
-a 和 --audiofile是一个意思,但可以不同时指定,没有指定那getopt_long就找不到呗,没什么大不了。
另外shortOptions[]里面的冒号是什么意思?
例如上面的a:s:v:kt:,咦,为什么k后面就没有冒号了?可以跟t连在一起?
是这样的,如果该字母后面有冒号,表示该字母后面有所带的参数,例如我们输入-a myfile.h264 -k,这样我们在碰到-a时,就可以使用optarg得到myfile.h264了。而-k没有参数,我们碰到-k时自己处理一下即可。
还有个index,大家man一下了。以后有空再补充 。