8

My GNU-Linux platform (debian stretch) has the C types u_int8_t, u_int16_t, u_int32_t and u_int64_t defined in the file sys/types.h while uint8_t, uint16_t, uint32_t and uint64_t are defined in stdint.h. I have found these types useful in the course of practicing X86-64 assembly language and interacting with C. Is there any reason why I should prefer one header file over the other (be it 'best practice', portability etc.)?. Is the answer any different for C++?

Sven Williamson
  • 1,094
  • 1
  • 10
  • 19
  • 1
    [This link](http://stackoverflow.com/a/5163960/6879826) to an answer for a related question suggests that these names [originated with BSD](http://lists.freedesktop.org/archives/release-wranglers/2004-August/000923.html). – ad absurdum Mar 23 '17 at 14:52

1 Answers1

14

stdint.h is standard C, which maps to cstdint in standard C++.

sys/types.h is not portable C.

Bathsheba
  • 231,907
  • 34
  • 361
  • 483