结构C的类型错误不兼容

时间:2013-04-08 01:05:08

标签: c

我收到的不兼容类型错误如下:

error: incompatible types when assigning to type ‘struct cache *’ from type ‘cache’

我有以下结构。

typedef struct __region {
int size;
void *addr;
struct __region *next;
} region;

typedef struct {
int size;
int remainingSpace;
void *addr;
char *bitmap;
struct cache *parent;
struct slab *next;
} slab;

typedef struct {
int alloc_unit;
int slab_counter;
slab *S;
} cache;

typedef struct {
region *R;
cache C[8];
} memory;

我运行的接收错误的代码是:

memory M;
M.C[0].S->parent = M.C[0];

2 个答案:

答案 0 :(得分:5)

parent是指向struct cache的指针,而M.C[0]struct cache。您可以使用&运算符来获取指向M.C[0]的指针,如下所示:

M.C[0].S->parent = &(M.C[0]);

答案 1 :(得分:3)

您传递的是变量本身而不是其地址。要传递其地址,您需要使用(&)运算符的地址:

M.C[0].S->parent = &(M.C[0]);

有关详情,请参阅this