0

我需要访问[pid[value]],但我不确定符号甚至意味着什么。

我知道如何使用**args来获取给我的程序的参数。如果我有[pid][value],我可以做args[1]forpidargs[2]for value,但如果我有[pid[value]],我不知道。如何访问这两个参数?

4

2 回答 2

1

该符号通常意味着pidvalue都是可选参数,并且仅在首次指定value时才允许进一步。pid所以你的程序可以用零个参数、一个参数(args[1]PID也是)或两个参数(args[1]仍然是PID,并且args[2]是新的优先级)来调用。

于 2013-11-12T20:42:36.173 回答
1

可选参数仅在您有合理的默认值时才有意义。假设您这样做,请确定最常需要哪个并将其设为第一个。

char *pid ;
char *value ;

if (argc < 1) {
    value = VALUE_DEFAULT ;
    pid = PID_DEFAULT ;
    }
else if (argc < 2) {
    value = VALUE_DEFAULT ;
    pid = argv[1] ;
    }
else if (argc < 3) {
    value = argv[1] ;
    pid = argv[2] ;
    }

只有当你有一组非常有限的参数(你这样做)或者你经常使用它时输入标志或参数名称才值得使用位置可选参数才有效。

精通命令行解析是个好主意。这是未来不会有太大变化的一件事。

于 2013-11-12T20:56:51.620 回答