gpt4 book ai didi

c - glib命令行解析顺序敏感吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:26 26 4
gpt4 key购买 nike

glib 的命令行选项解析顺序是否敏感?在下面的代码中,我在 GOptionEntry 数组中的 --bar 之前定义了选项 --foo。解析 --foo --bar 将两者都设置为 true,但 --bar --foo 仅将 foo 设置为 true。我如何让它忽略顺序,因为无序选项是 *nix afaik 中的规范。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <glib.h>

static bool foo = false;
static bool bar = false;

static GOptionEntry entries[] =
{
{ "foo" , 0 , 0 , G_OPTION_ARG_NONE , &foo , "foo" , NULL } ,
{ "bar" , 0 , 0 , G_OPTION_ARG_NONE , &bar , "bar" , NULL } ,
{ NULL }
};

int main(int argc, char * argv[]) {
GError * error = NULL;
GOptionContext * context = g_option_context_new ("- convert fastq");
g_option_context_add_main_entries (context, entries, NULL);

if (!g_option_context_parse (context, &argc, &argv, &error)){
exit(1);
}

printf("%s\n", foo ? "foo is true" : "foo is false");
printf("%d\n", bar ? "bar is true" : "bar is false");
return 0;
}

结果:

> ./test2 
foo is false
bar is false
> ./test2 --foo
foo is true
bar is false
> ./test2 --foo --bar
foo is true
bar is true
> ./test2 --bar
foo is false
bar is true
> ./test2 --bar --foo
foo is true
bar is false

最佳答案

GOptionEntry 结构中的arg_data 指针应该指向一个gboolean,而不是一个boolgbooleangint 大小相同,可能比 bool 大。在您上次测试中,settimg foo 可能会覆盖 bar

关于c - glib命令行解析顺序敏感吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152042/

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