Pretypovani ukazatele struktury na bajt

Libor Konečný support na mikrovlny.cz
Neděle Únor 23 17:13:43 CET 2020


Zdravim osazenstvo, predevsim zdejsi programatory.

S novym kompilatorem (ten stary to nejakou zahadou umel)  resim 
pretypovani ukazatelu.

Mam funkci (zjednodusene)
void  funkce (UINT8 * from)
{
*from++=0x01 ;
*from++=0x02 ;
*from++=0x03 ;
*from++=0x04 ;
*from++=0x05 ;
*from=0x06 ;
}


A pak strukduru
struct {
   UINT16 magic;
   DWORD ident;
}  hdr;

A potrebuji ji naplnit,
tedy volam
funkce ((UINT8*)&hdr);

ale kompilator to naplni vzdy jen jednim znakem

tedy vysledek je ze hdr.magic ma jen prvni bajt spravny.

Pokud pouziji strukturu
struct {
   UINT8 pole[6];
}  hdr;

Pak se naplni vsech 6 bajtu spravne.

Jak ji volat spravne aby se struktura prepisovala bajt po bajtu ? 
(little a big endian zanedbejme)
Je zvlastni, ze stary kompilator fungoval spravne.

Dekuji za nakopnuti.
LK






Další informace o konferenci Hw-list