gpt4 book ai didi

c - 是否可以通过 getopt_long 参数列表向后移动?

转载 作者:行者123 更新时间:2023-11-30 16:04:13 24 4
gpt4 key购买 nike

我想根据是否存在特定参数来委托(delegate)几个可能的参数列表之一,大致如下:

./test --do-thing-1 --option-A=7 --common-option --option-B=2 # options C and D not valid
./test --do-thing-2 --option-C=9 --common-option --option-D=1 # options A and B not valid

我能想到的巧妙地做到这一点的最佳方法是让 main() 处理所有常见选项,并决定调用几个函数中的哪一个来处理其余部分。

请注意,我不想限制顺序,以便常见选项只能首先出现。

我的问题是,如果我在第二次解析参数之前将 optind 重置为 1,则 getopt_long 通过将无效字符串传递给 strncmp 出现段错误code> - 所以我想我不应该搞乱 optind。

我谷歌了一下,找不到任何关于是否可以跳过getopt_long参数列表的引用(我知道getopt是可能的) >),如果是,我该怎么做?

我不想使用任何非标准库。 (语言是纯 c,请不要使用 c++)

最佳答案

我的问题是我没有设置 static struct option long_options[] 的最后一行数组为零,正确设置可以修复错误。

GNU getopt 还需要 optind重置为 0 而不是 1,以便正确重置其内部状态。

关于c - 是否可以通过 getopt_long 参数列表向后移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com