我正在尝试将 getopt_long 用于我的代码。 optional_argument 和 required_argument 选项按预期工作,但 no_Argument 选项工作不正常。这就是我的编码方式。
struct option long_option[] =
{
{"auto",required_argument,0,'a'},
{"help",no_argument,0,'h'},
{"list",no_argument,0,'l'},
{0,0,0,0}
};
现在如果我编译并尝试:
./a.out --help
-->显示所有帮助内容
./a.out --help 1234
--> 仍然显示所有的帮助内容。它应该提示不需要参数的错误??
最佳答案
不,这不被认为是错误。 getopt_long
将 1234
解释为程序参数。
这个例子更清楚:
rm -r -f dir1/ dir2/
这里的-r
和-f
是选项,dir1/
和dir2/
都是程序参数.
请注意,如果您执行 rm file1.txt -f
,它将尝试删除名为“-f
”的文件。
关于c - 如何在getopt_long中使用no_argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128258/