, предполагающих У меня есть такой код:SizeOf (Struct) различный для разных компиляторов
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[]) {
typedef struct{
uint16_t x : 9;
uint8_t y : 7;
} z;
printf("sizeof(z) = %lu\n",sizeof(z));
}
У меня есть разные результаты для лязга на Mac (2), и кто-то сказали мне на Windows, он вернулся (3). Не уверен, насколько я это хорошо понимаю, но я вижу, что, хотя первый компилятор сжимает структуру до 9 + 7 = 16 бит, другой использует 16 бит uint16_t и 8 из uint8_t. Не могли бы вы посоветовать?
советую * что? * что вы хотите? почему ты беспокоишься? конечно, разные компиляторы на разных платформах делают разные вещи, когда дело доходит до деталей реализации ... –
Прочтите это http://stackoverflow.com/questions/18284640/c-size-of-structure-when-bit-field-is-used- and-how-it-is-stored-in-memory – Matt
Если вы не вставляете неназванные битовые поля нулевого размера, вы ничего не можете принять за макет битового поля. –