Ceci est la ligne 519 de Pourquoi avons-nous besoin d'un pointeur sur une structure avec un seul membre avec un seul membre Un nom étrange appelé et aurons-nous jamais besoin d'utiliser une ligne de code comme celui-ci? p> Globalement déclarer différents types de données avec les mêmes structures, n'a pas de sens pour moi. Quelle est l'idée derrière cela? P> winnt.h code> (version de la version: 0091)
inutilisé code>? p>
3 Réponses :
Et aurons-nous besoin d'utiliser une ligne de code comme celui-ci?
Hinstance hinstance = nouveau hinstance __; p> blockQuote>Vous utilisez généralement une valeur
hinstance code> renvoyée par un appel système Windows; Je n'ai jamais vu de code exécutant une ligne comme celle-là. P>
Le point est destiné aux différentes poignées d'avoir différents types afin que, par exemple, une hinstance ne soit pas assignée à une poignée. S'ils étaient tous définis comme "Void *", il y a des classes d'erreurs que le compilateur ne pouvait pas détecter. P>
Donc, l'idée derrière elle est d'avoir des types de données entier qui ne seront pas utilisés à des fins autres que ce qu'ils ont été déclarés?
Oui, cela fournit une sécurité de type pour les types de poignée afin d'obtenir une erreur lorsque vous essayez de passer une hinstance à une fonction nécessitant une poignée, même si la structure sous-jacente est identique. (Cette réponse allait être juste "oui", mais cela n'était évidemment pas assez verbose. Verbosité supplémentaire ajoutée.)
Ahhh je vois pourquoi C n'autorise pas les structs anonymes en tant que paramètres de fonctionner maintenant; Si elle traçait des structs anonymes comme étant égales à une struct identique avec la même configuration, elle ne ferait pas de causer des erreurs de faire ce truc. Cela dit, je suis sûr que le permettant cela permettrait un code plus flexible, mais au moins il y a une raison. Il semble également indiquer qu'il existe une véritable dépendance du code sur les pointeurs étant exactement la taille de l'INT, sinon gérerait une pause et beaucoup de code devraient être réécrites.
Ils ne soulignent rien à rien à la mémoire; Ils sont simplement utilisés pour désigner des objets (fichiers, ressources, sémaphores, fenêtres) lors de la saisie d'appels vers l'API Windows. Bien que ce ne soient rien de plus que des indexés dans les tables d'objets du noyau, les développeurs ont décidé qu'ils en font un pointeur à une structure inutilisée qui les rendrait «opaques» et causer moins de confusion entre autres types. Le deconpar_handle code> est une macro de fonction qui ne fait que déclarer des types opaques pour les poignées. P>