Waarschuwing: toewijzing van incompatibel aanwijzer type

Ik krijg steeds veel ‘toewijzing van incompatibele wijzertype’ waarschuwingen en ik heb geen aanwijzing over waarom.

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

Ik krijg de waarschuwing op elk moment dat ik probeer iets te doen voor pageFrames[i].thePage.

De betreffende structuren zijn:

//algo_structs.h
typedef struct{
int pageNum;
} myPage;
typedef struct myPage{
struct myPage* thePage;
int loaded;
int lastRef;
} myPageFrame;

Antwoord 1, Autoriteit 100%

myPageen struct myPagezijn verschillende typen. U kunt ze hetzelfde type maken door de structDefinitie naar:

te wijzigen

typedef struct myPage {
    int pageNum;
} myPage;

of u kunt gewoon myPage *gebruiken in plaats van struct myPage *.


Antwoord 2

U hebt een type gedefinieerd genaamd myPage, maar u hebt dan een structuurlid van het type struct myPage. Je moet consistent zijn. Hier is een manier om het te bevestigen:

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

Other episodes