2017-03-23 2 views
5

My GNU-Linux Plattform (debian stretch) hat den C-Typen u_int8_t, u_int16_t, u_int32_tu_int64_t und in der Datei definiert, während sys/types.huint8_t, uint16_t, uint32_t und uint64_t in stdint.h definiert sind. Ich habe diese Typen im Laufe des Übens der X86-64-Assemblersprache und der Interaktion mit C nützlich gefunden. Gibt es irgendeinen Grund, warum ich eine Header-Datei der anderen vorziehen sollte (sei es 'Best Practice', Portabilität etc.)? Ist die Antwort für C++ anders?Sollte ich C-Typen (uint8_t /.../ uint64_t) oder (u_int8_t /.../ u_int64_t) verwenden?

+1

[Dieser Link] (http://stackoverflow.com/a/5163960/6879826) auf eine Antwort für eine damit verbundene Frage lässt vermuten, dass diese Namen [mit BSD entstand] (http : //lists.freedesktop.org/archives/release-wranglers/2004-August/000923.html). –

Antwort

10

stdint.h ist der Standard C, der im Standard C++ auf cstdint abgebildet wird.

sys/types.h ist nicht tragbar C.

+1

Tatsächlich ist nichts in 'sys' tragbar. Deshalb ist es "sys". –

+0

@Bathsheba perfekt danke! –

+0

@JohnZwinck danke! –

Verwandte Themen