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?
 
    