Hirdetés

Keresés

Új hozzászólás Aktív témák

  • jattila48

    aktív tag

    válasz coco2 #16444 üzenetére

    Próbáld meg a BYTE típust, ami nyilván egy typedef. Ez biztos, hogy 8 bites, bármelyik platformon. Már ha létezik BYTE. Ha nem, akkor csinálsz, platformtól függően. 8 bites alap típus biztos, hogy van bármelyiken. A #pragma pack(1) (meg a __packed__) itt nem alkalmazható, mivel az a struktúra tagok alignálására vonatkozik, alaptípusokra nincs hatása.
    Olyan pedig nincs, hogy a C nyelv char típusának bithossza attól függjön, hogy a rendszer vagy a fordító ázsiai, vagy más (mármint ha ugyanarról a rendszerről, pl. Window-ról, és ugyanarról a fordítóról beszélünk). Ázsiai nyelvek nyilván nem 1 byte-os karaktereket használnak, de erre a C-nek külön típusa (pl. wchar) van. Amúgy meg szerintem nyugodtan használd az unsigned char-t mint byte-ot, ma már nem valószínű, hogy van ettől eltérő platform.

  • opr

    nagyúr

    válasz coco2 #16444 üzenetére

    Elvileg igen, gyakorlatilag MSVC-nel ganyolni kell hozza, hogy legyen olyan, hogy __packed__. Mondjuk ha VS-ben lecsereled a compilert masra, akkor mukodhet. Vagy hasznalod a #pragma pack(1)-et, de azt nem tudom hogyan/mennyire mukodik.

    unsigned char az viszont unsigned char. Az, hogy ez hany bites, az attol fugg, mire forditod, de nagyon egzotikusnak kell valaminek lennie hozza, hogy letezzen olyan, hogy char (plane unsigned char), es nem pontosan 8 bit legyen.

    ui.: Ha valamilyen geppel probalsz mondjuk soros porton kommunikalni, van par ilyen azsiai borzalom, ahol 16 bit a char alapbol, azokkal lehet szopni, de meg ott is ritka, altalaban kovetik a 8 bites "szabvanyt" Ok is.

Új hozzászólás Aktív témák