2 ms·
In principle they could declare an ABI constraint for uintptr_t to have a given width. But note that the Windows headers define both UINT_PTR and ULONG_PTR: the
by mananaysiempre 4y ago
In principle they could declare an ABI constraint for uintptr_t to have a given width. But note that the Windows headers define both UINT_PTR and ULONG_PTR: the former is {16,32,64} bits on Win{16,32,64}, while the latter is {32,32,64} bits (while a uintptr_t on a sane 16-bit compiler would probably need to be memory-model-dependent, although I haven’t checked). I don’t know why they cared to preserve this distinction, as my impression was that support for Win16 ended before Win64 was released, but maybe the inside timeline was different.
- 0x0 4y agoWasn't amd64 windows available since around xp/vista? While windows 10 ships a 32bit version that still contains ntvdm and win16 support...
- mananaysiempre 4y agoThere was a small overlap after all, I was a bit off. The first 64-bit version of Windows XP (for the Itanium) was released in October 2001, while the support period for Windows 3.11 ended in December 2001. At the same time, the existence of those types is not really about application support (which, as you note, you can get even today), it is about toolchain support, and AFAIU the last Microsoft toolchain to be able to target Win16 is VC++ 1.52 as bundled with VC++ 4 (1995). I don’t know at which point you stopped being abls to graft new SDKs onto it. Of course, the Watcom and Digital Mars compilers can still do it, but they maintain their own headers I think.