警告:从不兼容的指针类型分配

时间:2013-12-03 03:27:38

标签: c pointers struct

我不断收到很多“来自不兼容指针类型的警告”的警告,而且我还没有找到原因。

myPageFrame pageFrames[numOfFrames];
myPage pages[numOfPages];

//in a for loop
pageFrames[i].thePage = (myState == HOT ? (&pages[i]) : NULL);  // one of the offenders

每当我尝试对pageFrames[i].thePage做任何事情时,我都会收到警告。

有问题的结构是:

//algo_structs.h
typedef struct{

int pageNum;

} myPage;

typedef struct myPage{

struct myPage* thePage;
int loaded;
int lastRef;

} myPageFrame;

2 个答案:

答案 0 :(得分:9)

myPagestruct myPage是不同的类型。您可以通过将struct定义更改为:

来使它们成为相同的类型
typedef struct myPage {
    int pageNum;
} myPage;

或者您可以使用myPage *代替struct myPage *

答案 1 :(得分:0)

您已经定义了一个名为myPage的类型,但您有一个类型为struct myPage的结构成员。你需要保持一致。这是修复它的一种方法:

typedef struct myPage{
    myPage* thePage;
    int loaded;
    int lastRef;
} myPageFrame;