user3056261 user3056261 - 1 month ago 13
C Question

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;

R.. R..
Answer

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 *.