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%
myPage
en struct myPage
zijn verschillende typen. U kunt ze hetzelfde type maken door de struct
Definitie 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;