Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-创建向联合返回数据的查找表:按位结构或短结构_C_Struct - Fatal编程技术网

C-创建向联合返回数据的查找表:按位结构或短结构

C-创建向联合返回数据的查找表:按位结构或短结构,c,struct,C,Struct,我正在尝试构建一个具有特殊情况的大型静态查找表。通常,它需要向结构返回3个状态 typedef struct state{ unsigned short speed : 3; unsigned short direction : 1; unsigned short size : 1; }STATE; 但是它有一些特殊的情况,这些情况只是存储在一个简短的文本中,并且这些值是预定义的。我想用工会,因为它是一张大桌子 typedef union instruction{

我正在尝试构建一个具有特殊情况的大型静态查找表。通常,它需要向结构返回3个状态

typedef struct state{
  unsigned short speed : 3;
  unsigned short direction : 1;
  unsigned short size : 1;
}STATE;
但是它有一些特殊的情况,这些情况只是存储在一个简短的文本中,并且这些值是预定义的。我想用工会,因为它是一张大桌子

typedef union instruction{
        STATE state;
        unsigned short rule;
}INSTRUCTION;
该表如下所示:

static const INSTRUCTION table[2][2] = {
  {{STOP},{1,1,1}},
  {{4,0,0},{JUMP}}
};
我遇到的问题是,表仅将联合中的第一个元素视为数据类型。我不能返回STOP,因为它使STOP的代码速度加快。如果我将其切换,该表将忽略附加值

您知道如何从表中返回数据而不在我的结构中添加几个附加标志吗?

您需要使用指定的初始值设定项来初始化正确的联合成员:

static const INSTRUCTION table[2][2] = {
  {{ .rule = STOP},    { .state = {1,1,1}}},
  {{ .state = {4,0,0}},{ .rule = JUMP}}
};

太棒了,成功了,谢谢!它没有立即工作,我也不确定我改变了什么,但它编译了,我测试了它,它是完美的,但我的IDE仍然强调它是我语法中的一个错误。