Piszę parser dla pewnej struktury danych, po godzinach debugowania dowiedziałem się, że problem polega na tym, że Visual Studio nie interpretuje struktur tak, jak to mówię. Wydaje się pewne "wyściółka" służyLokalne wyłączanie padding
struct foo {
unsigned char a; //0x00
unsigned char b; //0x01
unsigned int c; //0x02
unsigned int d; //0x06
unsigned int e; //0x0A
unsigned int f; //0x0E
//0x12
};
spodziewałem "sizeof (foo) = 4 * 4 + 2 = 18", ale pojawia się "sizeof (foo) = 20". Czy istnieje możliwość wyłączenia padding tylko dla tej specjalnej struktury? Wypróbowałem
__declspec(align(1)) struct foo { ...
ale to nie działa. Dziękuję za pomoc.
myślę [ten artykuł w witrynie MSDN pomogą] (http://msdn.microsoft.com/en-us/library/ms253935%28v=vs. 90% 29.aspx). –
Czy kompilujesz z '/ Zp 1'? –
@MartinBroadhurst To by globalnie wyłączyć dopełnienie, Rozwiązanie hans działa. – Listing