sizeof estrutura vazia é 0 em C e 1 em C ++, por que? [duplicado]
Possíveis duplicatas:
Classe vazia em C ++
Qual é o tamanho de uma estrutura vazia em C?
Eu li em algum lugar que o tamanho de uma estrutura vazia no C ++ é 1. Então pensei em verificá-lo. Infelizmente eu salvei como um arquivo C e usei<stdio.h>
cabeçalho e fiquei surpreso ao ver a saída. Foi 0.
Que significa
struct Empty {
};
int main(void)
{
printf("%d",(int)sizeof(Empty));
}
estava imprimindo 0 quando compilado como um arquivo C e 1 quando compilado como um arquivo C ++. Eu quero saber o motivo. Eu li que sizeof empty struct em c ++ não é zero porque se o tamanho fosse 0, dois objetos da classe teriam o mesmo endereço, o que não é possível. Onde eu estou errado?