c++11uintcstdint

C++11 uint types vs u_int


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)?

Solution

  • 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.