user3056261
user3056261

Reputation: 95

Warning: assignment from incompatible pointer type

I keep getting a lot of 'assignment from incompatible pointer type' warnings, and I haven't a clue as to why.

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

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

I get the warning any time I try to do anything to pageFrames[i].thePage.

The structs in question are:

//algo_structs.h
typedef struct{

int pageNum;

} myPage;

typedef struct myPage{

struct myPage* thePage;
int loaded;
int lastRef;

} myPageFrame;

Upvotes: 9

Views: 73263

Answers (2)

godel9
godel9

Reputation: 7390

You've defined a type called myPage, but you then have a struct member of type struct myPage. You need to be consistent. Here's one way of fixing it:

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

Upvotes: 0

R.. GitHub STOP HELPING ICE
R.. GitHub STOP HELPING ICE

Reputation: 215193

myPage and struct myPage are different types. You could make them the same type by changing the struct definition to:

typedef struct myPage {
    int pageNum;
} myPage;

or you could just use myPage * instead of struct myPage *.

Upvotes: 11

Related Questions