【发布时间】:2012-11-03 11:03:48
【问题描述】:
我正在尝试在 C++ 程序中使用 getopt 来解析命令行参数。 参数是 -d xxx、-s xxx 和 -?。 我无法捕捉到 -?参数,我想打印一个标准的使用信息。
while ((c = getopt (argc, argv, "?d:s:")) != -1) {
switch (c) {
case 'd':
...do stuff
break;
case 's':
... do stuff
break;
case '?':
// From example on GNU page, seems to capture -d, -s when no args provided.
// Gets here when -d or -s provided, but no arguments for these options.
default:
// shut down
}
尽我所能,我似乎无法捕捉到“-?”自行选择。有什么特别的技巧可以捕捉'?在其自己的?我是否为 getopt 提供了正确的模式(即'?d:s:') 目前,c 被设置为 '?'每当提供无效选项时,即使是“?”不在命令行上提供。
谢谢大家。
【问题讨论】:
-
getopt使用?作为特殊值的事实是对您的一个赠品,您应该不使用它来显示帮助。这就是-h和--help的用途。遵守这些约定而不是做自己的事是值得的。