Jeśli debuguję poniższy kod, to widzę, że wartość size
wynosi 12 (zgodnie z oczekiwaniami).Problemy podczas czytania rozmiaru struktury
#include <cstdint>
int main(int argc, char *argv[])
{
typedef struct __attribute__((__packed__)) { int8_t value; } time;
typedef struct __attribute__((__packed__)) {
uint8_t msg[8];
// time t1;
uint32_t count;
} theStruct;
theStruct s;
int size = sizeof(s);
return 0;
}
Co ciekawe, usuwając komentarz w „czasie t1;”, wartość size
idzie do 16. Spodziewałem 13.
wiem (mniej lub bardziej), że to wynika z danych struktura historia opasania ...
Ale czy jest jakiś sposób na uniknięcie tego problemu? Co należy zrobić, aby przeczytać size = 13
?
w moim test (g ++ 4.8.4) Otrzymuję rozmiar "13" z usuniętym komentarzem. Czy jesteś pewien, że przetestowałeś go poprawnie? –
Tak, wpisano poprawnie. Używam (Qt enviroment x86) MinGW 4.8.2 32 bit – KcFnMi
Mogę odtworzyć wyniki @ EvanTeran. BTW, jaki jest twój język programowania? C lub C++? Jak wywołujesz kompilator? – 5gon12eder