Re: Adresace přes pointer
Miroslav Mraz
mrazik na volny.cz
Čtvrtek Říjen 26 14:30:05 CEST 2023
Takhle také ne. Nevšiml jsem si, že kopírovat se mají jednotlivé byty.
Což opravdu bude závislé na platformě. V C++ můžete použít přiřazení
přetížením operátoru=, ale moc to nedoporučuji.
typedef uint8_t byte;
struct tDATA {
int16_t x;
int16_t y;
tDATA & operator= (const byte * ptr) {
memcpy (this, ptr, sizeof(tDATA));
return * this;
}
}__attribute__((packed)) Data;
byte buf[] = {0x10,0x11,0x12,0x13};
static void test () {
Data = buf;
printf("x = 0x%04X, y = 0x%04X\n", Data.x, Data.y);
}
test() vypíše na malém indiánu
x = 0x1110, y = 0x1312
Nevím, co je účelem, ale takto to opravdu má fungovat.
Mrazík
On 26. 10. 23 13:26, Miroslav Mraz wrote:
> *ADATA=buf;
> je v C-čku blbost. Pole musíte kopírovat pomocí cyklu for()
> int16_t * ADATA=(int16_t*)&DATA;
> for (int i=0; i<2; i++) ADATA[i]=buf[i];
> ale memcpy() vůbec není špatný nápad.
>
> Mrazík
Další informace o konferenci Hw-list