zahada delky struktury GCC

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Březen 11 19:41:28 CET 2024


Mejme tyto struktury

#define CFG_DATA_LEN    1024
#define GPS_FIXP_MULT    (10e7)

typedef struct
{
     char first_read[9];
     uint8_t res_valid;
     uint8_t reserved;
     char user_card[9];
     char user_phone[13];
     char res_time[34];
} app_data_reservation_t;


typedef struct {
     union {
         struct {
             uint32_t     index;                        // index of 
configuration, count of writes
             int            gsm_preffered_speed;        // module GSM 
baudrate
             char        gsm_apn[32];                // module GSM APN
             char         car_ident[8];                // car identification
             char         car_aeskey[65];                // 256b -> 64 
chars hex encoded
             app_data_reservation_t    reservation;    // reservation data
             int32_t        gps_last_latitude;            // car last 
known latitude, *10^7 (GPS_FIXP_MULT)
             int32_t        gps_last_longitude;            // car last 
known longitude, *10^7 (GPS_FIXP_MULT)
         };
         uint8_t ba[CFG_DATA_LEN - 4];
     };
     uint32_t crc32;
} app_data_cfg_t;

Takhle je to dle ocekavani, app_data_cfg_t ma delku 1024B

Kdyz ale pro ty GPS souradnice pouziju typ double, neni delka 
ocekavanych 1024 ale 1032B

Myslel jsem nejdriv, ze je to tou vlozenou strukturu ale dela to ten double.

Tusi nekdo, cim to je? Je to nejaka pro me skryta vlastnost nebo chyba?



Další informace o konferenci Hw-list