我正在试验 POSIX getopt
函数并遇到了一些问题。我想通过命令行参数为应用程序提供一种模式(读取或写入)。所以我试着做这样的事情:
enum mode{
read,
write
};
enum mode mode;
int opt;
while((opt = getopt("rw")) != -1){
switch(opt){
case 'w':
mode = write;
break;
case 'r':
mode = read;
break;
default:
fprintf(stderr, "Usage: %s [-r-w]\n", argv[0]");
exit(1);
}
}
问题在于它的工作方式,现在可以同时传递 -r
和 -w
选项,这是无意义的。我只想选择两种模式中的一种。
这样做的“惯用”方法是什么?
最佳答案
这太主观了,这不是一个好问题,但这里有一些想法:
(1) 一种方法是只有一个选项。默认行为是读取,如果指定了 -w 选项,则模式是写入。
(2) 一些Unix程序通过说“Last argument wins”来解决问题
(3) 另一种方法是使用单独的变量,并检测两个标志都已设置的条件。
我已经看到了所有三种方法的使用。可能还有其他想法。
关于c - 如何选择其中一个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53577852/