Bir C programını derlemeye çalışırken bu hatayı alıyorum.
Alıntı:
>hata: lvalue required as left operand of assignment
Derleme sonuçlarına baktığımda bu 'BITMAP *' ile başlayan satırlarda hata verdiğini görüyorum.
i = mapnumblockstr; while (i) {
((BITMAP *) myblkstrpt->bgoff) = abmTiles[myblkstrpt->bgoff];
if (myblkstrpt->fgoff!=0)
((BITMAP *) myblkstrpt->fgoff) = abmTiles[myblkstrpt->fgoff];
if (myblkstrpt->fgoff2!=0)
((BITMAP *) myblkstrpt->fgoff2) = abmTiles[myblkstrpt->fgoff2];
if (myblkstrpt->fgoff3!=0)
((BITMAP *) myblkstrpt->fgoff3) = abmTiles[myblkstrpt->fgoff3];
myblkstrpt++; i--;
}
Burada kullanılan değişken bildirimleri de şu şekilde.
typedef struct { /* Structure for data blocks */
long int bgoff, fgoff; /* offsets from start of graphic blocks */
long int fgoff2, fgoff3; /* more overlay blocks */
unsigned long int user1, user2; /* user long data */
unsigned short int user3, user4; /* user short data */
unsigned char user5, user6, user7; /* user byte data */
unsigned char tl : 1; /* bits for collision detection */
unsigned char tr : 1;
unsigned char bl : 1;
unsigned char br : 1;
unsigned char trigger : 1; /* bit to trigger an event */
unsigned char unused1 : 1;
unsigned char unused2 : 1;
unsigned char unused3 : 1;
} BLKSTR;
BITMAP ** abmTiles = NULL;
short int mapblockstrsize, mapnumblockstr, mapnumblockgfx;
myblkstrpt = (BLKSTR *) mapblockstrpt;
char * mapblockstrpt = NULL;
stackoverflow'da incelediğim bir çözümdeki gibi üstteki ifadeyi bu şekilde yaptığımda derleniyor ama program çöküyor. Programcının burada karşılaştırma yerine bir değer atama yapmak istediği açık:
((BITMAP *) myblkstrpt->bgoff) == abmTiles[myblkstrpt->bgoff];
Sizce hata nerede olabilir :huh:
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]