Qual tipo de subtração de 2 size_t's?

Qual tipo em C deve ser usado para representar a diferença entre os tamanhos de dois objetos?

Comosize_t não está assinado, algo como

size_t diff = sizeof (small_struct) - sizeof (big_struct);

obviamente não estaria correto e parece-me que não há um equivalente assinado real.

ptrdiff_t parece meio tentador, mas

como seu nome diz, é para subtrair ponteiros.Eu li que, por exemplo plataformas segmentadas como o DOS têm um tamanho de objeto máximo de 64k que é representável por 16 bits. Ponteiros distantes, no entanto, são compostos de um valor de segmento de 16 bits e um valor de deslocamento de 16 bits. Isso não fariaptrdiff_t em tal plataforma de 32 bits também? Em caso afirmativo, a diferença entre dois objetos em tamanho exigia somente 16 bits, mas o uso de ptrdiff_t forneceria uma variável de 32 bits, tornando-a sub-ótima.

Então, o que é um tipo portátil adequado para trabalhar com tal valor?

Edit: Eu sei sobre ssize_t, mas é

não faz parte do padrão C.na verdade não se destina a tal uso, mas para retornar um tamanho ou um valor de erro (negativo).

questionAnswers(4)

yourAnswerToTheQuestion