C++11 uint types vs u_int

masgo picture masgo · Apr 25, 2014 · Viewed 8.4k times · Source

I just stumbled upon the type u_int8_t because it did not compile in Windows+MinGW (but compiled fine under Linux). According to this site the C++11 standard defines the type uint8_t. I just used the latter and everything worked.

The questions that arised are:

  1. Is there any difference between u_int8_t and uint8_t?
  2. Is there a reason (besides legacy code) to use u_int8_t?
  3. Is it safe to assume that uint8_t will be present if I use a C++11 compiler (on different OS or architectures)?
  4. Are the answers to the above questions also valid for the other types (intX_t and uintX_t)?

Answer

R. Martinho Fernandes picture R. Martinho Fernandes · Apr 25, 2014

Is there any difference between u_int8_t and uint8_t?

u_int8_t is just a very old name that was not standardised. Avoid it.

Is there a reason (besides legacy code) to use u_int8_t?

Suicide by coworker.

Is it safe to assume that uint8_t will be present if I use a C++11 compiler (on different OS or architectures)?

The C++ standard requires it to be present on all implementations that have an unsigned 8-bit type available (today that means everything that is not exotic).

Are the answers to the above questions also valid for the other types (intX_t and uintX_t)?

Pretty much, yes.