1

我收到一个不兼容的类型错误,如下所示:

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];
4

2 回答 2

5

parent是指向 a 的指针struct cacheM.C[0]而是 a struct cache。您可以使用&运算符来获取指向的指针M.C[0]

M.C[0].S->parent = &(M.C[0]);
于 2013-04-08T01:07:21.850 回答
3

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

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

有关更多信息,请参阅

于 2013-04-08T01:07:43.600 回答