我有一些看起来像这样的东西:
while((ch = getopt(argc, argv, "d:t")) != EOF) { ... }
我可以这样称呼函数:
./foo -d "my house" -t some more thoughts
以某种方式getopt()知道-d和-t是选项,但之后它知道'某些''更多'和'思想'是为了以后。 getopt()寻找什么来知道它已经完成了处理args?什么是EOF?
答案 0 :(得分:2)
正如评论中所述,将EOF
与getopt()
一起使用是错误的("发生"在使用-1
EOF
的系统上工作)。使用-1
。
对于您的其他问题:
getopt()想知道它已经完成了处理args吗?
答案很简单。 getopt()
要求在其他参数之前使用选项调用您的程序。因此它会在第一次找到时停止
NULL
(表示argv[]
的结尾)或者当达到argc
时(取决于具体实施)或-
开头且您的配置字符串中没有:
消耗的参数。