typedef struct
{
uint32 item1;
uint32 item2;
uint32 item3;
uint32 item4;
<some_other_typedef struct> *table;
} Inner_t;
typedef struct
{
Inner_t tableA;
Inner_t tableB;
} Outer_t;
Outer_t outer_instance =
{
{NULL},
{
0,
1,
2,
3,
table_defined_somewhere_else,
}
};
我的问题是如何检查tableA是否为空,就像外部实例的情况一样。
它试图:
if ( tmp->tableA == NULL )
。我得到“错误:二进制的操作数无效=”/****************************编辑:更新代码如下*****************************/
我已经根据bta的建议更改了代码,但现在又出现了一个错误
“错误:初始值设定项元素不是常量”,位于空值(at items_instance)下的行中
typedef struct
{
uint32 item1;
uint32 item2;
uint32 item3;
uint32 item4;
} Items_t;
typedef struct
{
Items_t *itemsA;
Items_t *itemsB;
} Outer_t;
Items_t items_instance=
{
1,
2,
3,
4
};
Outer_t outer_instance=
{
NULL,
items_instance
};
最佳答案
在修改后的代码中,您将outer_instance
的第一个字段设置为空,但尝试直接将第二个字段设置为items_instance
。由于该字段的类型为Items_t*
,但items_instance
的类型为Items_t
,因此会出现类型错误。
要将字段设置为items_instance
的地址,请使用&items_instance
。
关于c - 如何检查typedef结构的内部typedef结构是否为NULL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2685379/