从ncurses字段中获取值列表

时间:2019-05-06 06:00:35

标签: c ncurses

我想从类型为TYPE_ENUM的ncurses FIELD中获取值列表。值列表已使用以下代码设置:

const char* val_lst[] = { "type 1", "type 2", "type 3", NULL };
set_field_type(fields[OPT_VAL_FLD], TYPE_ENUM, val_lst, 0, 1);

这可能吗?如果可以,怎么办?我已经看到了功能

char *field_arg(FIELD *field);

但无法解释它返回的指针。

1 个答案:

答案 0 :(得分:0)

那个

char *field_arg(FIELD *field);

看起来不像ncurses。自1995年首次发布以来,它一直是 void* 。SVr4使用了 char*

无论哪种方式,field_arg的结果都是指向称为 argument块 不透明 结构的指针。这是因为每种字段类型都有一组不同的参数,这些参数被复制到参数块中。

如果您需要了解参数块的布局,则必须查看源代码(不同的实现之间有所不同):

typedef struct
  {
    char **kwds;
    int count;
    bool checkcase;
    bool checkunique;
  }
enumARG;
typedef struct 
{
    char **choices;
    unsigned num_choices;
    bool ignore_case;
    bool exact;
} enum_args;
typedef struct {

    char ** list;
    int checkcase;
    int checkuniq;
    int count;
} ENUM;