Alternativni UNIX systemy - BSD
Jan Kasprzak
kas na fi.muni.cz
Sobota Leden 13 21:59:13 CET 2007
Libor Chocholaty wrote:
: >> Martin `MJ' Mares wrote:
: >> : Chyba kompilatoru to urcite neni, zmineny zdrojak neni podle normy
: >> : korektni -- nikdo nerika, ze pointer na char jde pretypovat na pointer
: >> : na nejaky sirsi typ a pak k nemu pristupovat.
: >> :
: >> : (Kdyby to byl Solaris na SPARCu, nedivil bych se vubec, protoze SPARC,
: >> : pokud si dobre pamatuji, nedovoluje unaligned pristupy k 32-bitovym
: >> : cislum.)
:
: Ja bych ho ocenil i verejne. Nepomohl by nejakym zpusobem union?
: Neco jako
: typedef union {
: uint32_t *ptr32;
: unsigned char *ptr_uchar;
: } ptr_union;
:
Tam nejde o pretypovani toho pointeru, ale o to, co psal Martin
Mares: procesor proste nemusi fyzicky umet ten 4-bajtovy uint32_t nacist
z adresy, ktera neni delitelna ctyrmi. Norma jazyka C s tim pocita,
a takoveto konverze nepovoluje.
Samozrejme muzete mit union z uint32_t a unsigned charu,
a mit pole takovychto unionu (kde kazdy char bude teda zacinat na adrese
delitelne ctyrmi). Nebo to memcpy a podobna magie (pouzit pointer na char,
a teprve ten ziskany char pretypovat na uint32_t).
-Jan Kasprzak
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Journal: http://www.fi.muni.cz/~kas/blog/ |
> I will never go to meetings again because I think face to face meetings <
> are the biggest waste of time you can ever have. --Linus Torvalds <
Další informace o konferenci Linux