Welcher Typ zum Subtrahieren von 2 size_t?

Welcher Typ in C sollte verwendet werden, um den Unterschied zwischen den Größen zweier Objekte darzustellen?

Wiesize_t ist unsigniert, so etwas wie

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

Natürlich wäre das nicht richtig und es scheint mir, dass es kein wirklich unterzeichnetes Äquivalent gibt.

ptrdiff_t klingt irgendwie verlockend, aber

Wie der Name schon sagt, dient es zum Subtrahieren von Zeigern.Ich habe gelesen, dass z.B. Segmentierte Plattformen wie DOS haben eine maximale Objektgröße von 64 KB, die durch 16-Bit dargestellt werden kann. Fernzeiger bestehen jedoch aus einem 16-Bit-Segmentwert und einem 16-Bit-Versatzwert. Würde das nicht machenptrdiff_t auf einer solchen plattform auch 32-bit? In diesem Fall sind für den Unterschied zwischen zwei Objekten nur 16 Bit erforderlich. Wenn Sie jedoch ptrdiff_t verwenden, erhalten Sie eine 32 Bit breite Variable, die suboptimal ist.

Was ist also ein geeigneter, portabler Typ, um mit einem solchen Wert zu arbeiten?

Edit: Ich weiß über ssize_t Bescheid, aber es ist

nicht Teil von Standard C.eigentlich nicht für eine solche Verwendung gedacht, sondern um entweder eine Größe oder einen (negativen) Fehlerwert zurückzugeben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage