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