While browsing the implementation of standard library headers in Visual Studio with C++ 20, I came across the type __int64
, it looked like a built-in type and I couldn't go to its definition. I googled it and found this article by Microsoft. Apparently the types __int32
, __int64
etc are Microsoft-specific built-in types.
I wondered why Microsoft uses these types instead of the non-Microsoft-specific int32_t
, int64_t
types, shouldn't they achieve the same thing? When I went to the definitions of those, they were just typedefs for types like int
and long long
, but I assume the implementation still guarantees that types like int32_t
have the amount of bits you'd expect. If these types/typedefs are good enough and reliable for the normal user, why does Microsoft use their own ones? If there's an advantage to using these types, why didn't they typedef int32_t
etc as __int32
etc? Is there a situation where I might want to use types like __int32
over int32_t
?