Différence entre char * et LPSTR dans Windows
Je m'excuse si c'est une base ou une question idiote. Quelle est la différence entre char*
et LPSTR
. où la sizeof
à la fois donne 4 octets dans mon compilateur. Quelqu'un peut-il m'expliquer en détail. merci..
source d'informationauteur 2vision2
Vous devez vous connecter pour publier un commentaire.
LPSTR
est un Windows type, qui se veut être la même quelle que soit la plateforme que vous ont été compilation sur. C'est un long pointeur vers une chaîne de caractères.De retour dans les jours de l'architecture segmentée (l'ancien segments de 64 ko, pas la plus récente sélecteur à base de segmentation de la mémoire), où l'on avait minuscule, petit, moyen, grand et énorme modèles de mémoire, il était important que le type Windows était toujours le même, quel que soit le type de pointeur
char *
a été.Donc, si vous avez respecté avec différents compilateurs où le sous-jacent de types différent, la
windows.h
fichier d'en-tête serait de définirLPSTR
pour compenser pour cela.Par exemple, Borland C peut-être eu un seize bits
char *
etLPSTR
peut être définie commefar char *
. Dans un compilateur oùchar *
était déjà une longue/pointeur loin,LPSTR
aurait simplement utilisé à la place.De nos jours, avec 32+ peu à plat des modèles, il n'y a probablement pas de réel besoin de ces manigances, mais il peut encore se faire avec des choses comme médiateur entre 64-bits et 32-bits de code. Encore, la définition des types de retour sont toujours avec nous et encore très en usage.
Fondamentalement, le LP* les pointeurs étaient pour indiquer l'utilisation d'un pointeur de 32 bits à 16 bits de Windows:
De WikiBooks
La différence est enterré dans les profondeurs du temps. LPSTR est l'acronyme de "pointeur long de la chaîne". De retour avant les processeurs 32 bits, les pointeurs, à la mémoire qui pourrait être dans un autre segment de la mémoire (de penser, de loin en mémoire), un besoin d'espace supplémentaire pour stocker.
Sur 32 bits (et plus tard) processeurs, ils sont exactement la même chose. Microsoft utilise LPSTR uniquement pour des raisons historiques.