2012-03-24 15 views

Antwort

10

Ja, das t ist für Typ.

Der Grund für die Definition der neuen Typen ist, dass sie sich in Zukunft ändern können. Da 64-Bit-Maschinen zur Norm geworden sind, ist es bei Implementierungen möglich, die Bitbreite von size_t auf 64 statt 32 Bits zu ändern. Damit können Sie Ihre Programme zukunftssicher machen. Einige kleine Embedded-Prozessoren verarbeiten nur 16-Bit-Zahlen. Ihr size_t könnte nur 16 Bit breit sein.

Eine besonders wichtige könnte ptrdiff_t sein, die den Unterschied zwischen zwei Zeigern darstellt. Wenn sich die Zeigergröße irgendwann (z. B. auf 64 oder 128 Bits) in der Zukunft ändert, sollte sich Ihr Programm nicht interessieren.

Ein weiterer Grund für die typedefs ist stilistisch. Während die size_t nur durch

typedef int size_t; 

mit dem Namen size_t klar definiert sein könnte zeigt, dass Variable die Größe von etwas (ein Container, ein Bereich des Speichers, etc, etc) sein soll.

1

Ich denke, es steht für Typ - ein Typ, der möglicherweise ein typedef von einem anderen Typ ist. Wenn wir also int sehen, können wir annehmen, dass es kein typedef von irgendeinem Typ ist, aber wenn wir uint32_t sehen, ist es höchstwahrscheinlich ein typedef eines Typs. Es ist keine Regel, aber meine Beobachtung, obwohl es eine Ausnahme gibt: wchar_t ist kein typedef eines anderen Typs, aber es hat _t.

1

Ja, es steht wahrscheinlich für type oder typedef oder so ähnlich.

Die Idee zwischen diesen typedef s ist, dass Sie genau angeben, dass diese Variable keine Gattungs int ist, aber es ist die Größe eines Objekts/die Anzahl der Sekunden seit der UNIX-Epoche/was auch immer; Außerdem gibt der Standard spezifische Garantien für die Eigenschaften dieser Typen.

Zum Beispiel size_t garantiert wird, um die Größe des größten Objekt enthalten, die Sie in C erstellen können - und einen Typ, der dies tun kann, abhängig von der Plattform ändern (auf Win32 unsigned long ok ist, auf Win64 müssen Sie unsigned long long, während auf einigen Mikrocontrollern mit wirklich kleinem Gedächtnis ein unsigned short genügen kann).

Was die verschiedenen [u]intNN_t, werden sie Größe Integer-Typen festgelegt: während für „plain“ int/short/long/... der Standard keine bestimmte Größe Mandat, oft finden Sie eine Art benötigen, die, wo immer Sie kompilieren Ihr Programm, es ist garantiert, dass es von dieser spezifischen Größe ist (zB wenn Sie eine Binärdatei lesen); diese typedef s sind die Lösung für diese Notwendigkeit. (Übrigens gibt es auch typedef s für "schnellste Ganzzahl von mindestens einiger Größe", wenn Sie nur einen garantierten Mindestbereich benötigen.)