Microsoft never bothered.
Of course, several people say that C does not support overloading. It does not matter. The API already uses overload, C-style. For example, the StrFormatByteSize function that you mentioned does have two overloads: LPSTR StrFormatByteSizeA(DWORD dw, LPSTR pszBuf, UINT cchBuf) and LPWSTR StrFormatByteSizeW( LONGLONG qdw, LPWSTR pszBuf, UINT cchBuf); . The problem with this mechanism, of course, is that it does not generalize well in various _Ex suffixes.
Microsoft could add a header that provides StrFormatByteSize as two built-in C ++ functions, not C macros. If they did, it would be easy to add a third overload for the _Ex suffix. There is no such C ++ header, and therefore, no C ++ overloads exist at all.
source share