Am 23.11.2012 15:03, schrieb Gor Gyolchanyan:
That's exactly how the original WinAPI does it. All handles are pointers
to their own dummy structures. The current druntime WinAPI just aliases
all handle types to HANDLE, which is itself an alias to void*. This is
very wrong.


On Fri, Nov 23, 2012 at 5:58 PM, Vladimir Panteleev
<vladi...@thecybershadow.net <mailto:vladi...@thecybershadow.net>> wrote:

    On Friday, 23 November 2012 at 13:57:14 UTC, Vladimir Panteleev wrote:

        If breaking code were not an issue, the best solution would be
        to make HANDLE a unique, opaque type (like a struct wrapping an
        intptr_t or void*) - which is exactly how it should be treated.
        It would need to support assignment/creation from "null" though.


    Oh, I think I remembered. I believe the proper solution is to create
    a dummy struct type, and make HANDLE a const pointer to it. Then it
    cannot be confused with other types, but still accepts null assignments.




--
Bye,
Gor Gyolchanyan.

This kind of reminds me of the way Microsoft "improved" Win16 by using #define STRICT, thus making void* into incompatible structures, which were still size compatible.

This way lots of assignment problems were easily caught during build time.

Oh the wonders of Win16 C development!

--
Paulo

Reply via email to