我想从类型为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);
但无法解释它返回的指针。
答案 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;