void display(char * str){
printf("%s: Missing file\n", str);
}
int main(int argc, char **argv)
{
int longIndex, opt = 0;
const char *optString = "h?";
static const struct option longOpts[] = {
{ "help", no_argument, NULL, 'h' },
{ NULL, no_argument, NULL, 0 }
};
opt = getopt_long(argc, argv, optString, longOpts, &longIndex);
while(opt != -1) {
switch(opt) {
case 'h':
case '?':
display(argv[0]);
break;
default:
break;
}
opt = getopt_long(argc, argv, optString, longOpts, &longIndex);
}
return 0;
}
此代码编译罚款,但是当我运行它想:解析'?'在getopt的
./a.out ?
它不调用显示。我错过了什么?
您错过了 - 。选项全部以 - 开头。 ?不是一种选择。 (实际上它是一个shell元字符,它可以匹配任何单字符文件名,所以它可能根本不会传递给你的程序。试试./a.out - ?(并注意getopt返回的其他注释)。 – rici