У меня есть две структуры, которые определены следующим образом:
struct EmptyStruct{
};
struct StructEmptyArr{
int arr[0];
};
int main(void){
printf("sizeof(EmptyStruct) = %ld\n", sizeof(EmptyStruct));
printf("sizeof(StructEmptyArr) = %ld\n", sizeof(StructEmptyArr));
return 0;
}
Скомпилирован с gcc (g++) 4.8.4 на Ubuntu 14.04, x64.
Выход (для gcc и g++):
sizeof(EmptyStruct) = 1
sizeof(StructEmptyArr) = 0
Я понимаю, почему sizeof(EmptyStruct)
равно 1
, но не может понять, почему sizeof(StructEmptyArr)
равно 0
. Почему существуют различия между двумя?