C Code

JAK to możliwe że na wyjściu są dwie różne wartości zamiast dwuch takich samych ?

//klasa mniej wiecej taka
class packet{ public:
    char *buf;
    // .....
};
//definicje
void packet::setint(char *p, int l){ (int *)p = l; };
void packet::setUL(char *p, UL l){   (UL *)p = l; }; 
int  packet::getint(char *p){  return *((int *)p); }; 
UL   packet::getUL(char *p){   return *((UL *)p); };
 
void packet::setsize(UL size){    setUL(buf+6, size);  };
UL   packet::getsize(){     return getUL(buf+6); };
 
//kod
{ 
//...
::printf("FILESIZE : %ld\t", f.filesize);
pack.setsize( f.filesize ); 
::printf("GS: %ld\t", pack.getsize() );
//...
}

daje wydruk

FILESIZE : 19281  GS: 0

Mam już buga
Definicje set powinny wyglądać nastepując:

void packet::setint(char *p, int l){ *((int *)p) = l; };
void packet::setUL(char *p, UL l){   *((UL *)p) = l; };
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License