Pourquoi est-socket non valide définie comme ~0 dans WinSock2.h (c++)?

Dans WinSock2.h, les invalides douille et d'une douille d'erreur sont définis comme ceux-ci? Est-il une signification à cette?

#define INVALID_SOCKET  (SOCKET)(~0)
#define SOCKET_ERROR            (-1)
Probablement parce que la valeur est "facile à gérer". Ils auraient pu choisir autre chose, vraiment.
Notez que la question est quelque peu trompeuse. C++ ne permet pas de définir ce définir, il est d'une autre bibliothèque/API. La question est donc avec plus de précision demandé "pourquoi n'bibliothèque XYZ" définir en tant que tel. Et je suis assez sûr que la bibliothèque fonctionne sous C trop, de sorte que C ou C++ est tout à fait hors de propos à ce point.
WinSock2.h est l'en-tête principal pour MS Windows "WinSock" de la bibliothèque. C'est une partie du kit de développement logiciel Windows et est la plus commune de la mise en œuvre des sockets disponibles pour Windows. C'est presque compatible avec les sockets BSD. Vous êtes, bien sûr, juste qu'il utilise le même en-tête, en C et en C++.

OriginalL'auteur unj2 | 2012-05-30