Ich habe diese "X_t" -Typen oft in c-Programmen gefunden, was bedeuten sie eigentlich? Wo ist der Ort dieser Definition?size_t, key_t, time_t usw.
Antwort
Das _t
Suffix bedeutet "Typ"; Es ist keine Regel, dass Sie es verwenden müssen, es ist nur eine Konvention gefolgt von vielen Standardtypen aus den Standardbibliotheken. Sie sind normalerweise in den Header-Dateien definiert, die sie verwenden, oder manchmal in Header-Dateien, die von diesen Headern enthalten sind.
size_t
ist in <stddef.h>
definiert und time_t
ist in <time.h>
definiert. key_t
ist kein Standard-C-Typ, es ist so wahrscheinlich in der Bibliothek Header definiert, für was auch immer Bibliothek es in verwendet wird
Wenn Sie genau die Header-Datei eine Definition herkommt wissen wollen, können Sie den Präprozessor ausführen können.
gcc -E file.c -o file.i
Die Preprozessor-Ausgabe file.i
zeigt Ihnen alle verschachtelten Include-Dateien. Sie können dann nach der Definition suchen und dann nach oben blättern, bis Sie den Kommentar finden, der angibt, aus welcher Header-Datei er stammt.
Ich habe gerade eine Google-Suche mit "c size_t" durchgeführt, die this erste Verknüpfung ergab. time_t Informationen sind auch auf dieser Seite. Sobald Sie diese Informationen erhalten, ist es ein kleiner Schritt zu erkennen, dass key_t dem gleichen Muster folgen muss.
- 1. Stringdarstellung von time_t?
- 2. C++ Zeichenfolge konvertieren Time_t
- 3. Wie Stunden aus time_t extrahieren?
- 4. Überläufe in size_t Ergänzungen
- 5. Umwandlung von size_t in int oder iterate mit size_t?
- 6. 'size_t' vs 'container :: size_type'
- 7. FFI: Wie erklärt `size_t`
- 8. Extrahieren size_t Template-Parameter
- 9. printf für size_t
- 10. .NET entspricht size_t
- 11. C++ String size_t
- 12. Guss ssize_t oder size_t
- 13. int mit size_t Vergleich
- 14. Pebble C konvertieren char zu Zeit für den Einsatz in Doppel difftime (time_t Ende, beginnend time_t)
- 15. konvertieren long int zu const time_t
- 16. Konvertieren eines time_t in NSDate-Objekts?
- 17. ist jemand etwas über 2038 time_t Bug?
- 18. Konvertiere MySQL Datetime in C++ Std :: time_t
- 19. Warum gibt die Funktion shmget (key_t, size_t, int) -1 in Netbeans zurück, läuft aber normal, wenn sie auf dem Terminal kompiliert wird?
- 20. Leistung von size_t in C++
- 21. sollte size_t oder ssize_t verwenden
- 22. Plattformunabhängig size_t Formatbezeichner in c?
- 23. Richtlinien zur Verwendung von size_t und offset_t?
- 24. Ist es empfehlenswert, std :: size_t überall zu verwenden?
- 25. Wie printf verwendet wird, um off_t, nlink_t, size_t und andere Sondertypen anzuzeigen?
- 26. Ist std :: container :: size_type garantiert size_t für Standardcontainer mit Standardzuordner?
- 27. Android NDK in Eclipse Typ size_t nicht
- 28. C++ mit size_t vs unsigned integer Beispiel
- 29. Welche Art von Daten hält size_t?
- 30. Richtiger Weg, um SIZE_T * zu marshalieren?
die Präprozessor-Methode zum Finden von Header-Dateien ist wirklich nützlich, danke! Ich frage mich nur, ob "cpp" und "gcc -E ..." ist das gleiche? – Pwn
"cpp" auf einem Linux-System ruft im Allgemeinen g ++ auf, was nicht dasselbe wie gcc ist. – gnud
Ich denke, dass das Suffix _t von POSIX für zukünftige Erweiterungen reserviert ist. Wenn das wirklich so ist, ist es generell keine gute Idee, _t als Suffix für benutzerdefinierte Typen zu verwenden. – Inshallah