【发布时间】:2011-12-17 10:00:12
【问题描述】:
我在使用带有自定义 argc 和 argv 的 getopt_long() 函数时遇到问题。
我以字符串而不是真正的命令行参数接收我的参数。然后从这个字符串构建一个 new_argc 和 new_argv 以与 getopt_long() 一起使用。但是 getopt_long() 在第一次调用本身时失败。返回 EOF 和 optarg = NULL。
string is "-c 10.30.99.41"
new_argc = 3
new_argv[0]=>./prog_name
new_argv[1]=>-c
new_argv[2]=>10.30.99.41
如果我通过命令行参数,getopt_long 对我来说可以。所以我的短期和长期选择是正确的。但是如果我通过 new_argc 和 new_argv 它会失败。
我确信我的短选项和长选项是正确的,并且 argv 是 NULL 终止的。我很抱歉我不能在这里发布更多代码。
我怀疑 getopt_long 是否可以与自定义 argc 和 argv 一起使用。我怀疑它只适用于真正的 argc 和 argv,因为它必须引用 libc 中与 argc、argv 相关的一些其他代码。有cmets吗?
option = getopt_long( new_argc, new_argv, short_options, long_options, NULL );
【问题讨论】:
-
您要发布字符串是什么以及如何使用它来构建列表吗?
-
@anoop,
optstring参数呢?你能发布调用getopt_long()的代码吗? -
我不知道这是否会有所作为,但如果你想模拟
main()的真实调用方式,new_argv[4]应该为 0。 -
谢谢,argv 是 NULL 终止的。
-
@anoop 如果你只是展示真实的代码,那会更明显。
标签: c++ c command-line-arguments getopt c-libraries