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/

10-11 00:51