Quelle est la signification de BSTR, LPColestr, LPCWSTR, LPSTR, LPCWCHAR, et bien d'autres s'ils sont tous simplement un tas de définitions qui résolvent à WCHAR_T de toute façon? P>
3 Réponses :
LPTRSTR et LPWSTR et des définitions similaires sont vraiment définies. BSTR et LPOLestr ont des significations particulières - elles indiquent que la chaîne pointée est allouée de manière particulière. P>
Chaîne pointée par BStr doit être attribuée à Sysallocstring () Fonctions familiales. La chaîne indiquée par LPOlestr est généralement allouée avec CoTaskMAllAlC () (cela devrait être considéré dans la documentation à l'appel COM acceptant / le renvoyer). P>
Si les exigences d'allocation / de distribution pour les chaînes pointées par BSTR et LPOLestr sont violées, le programme peut fonctionner dans un comportement non défini. P>
LPTRSTR code> indique que le tampon de chaîne peut être ANSI ou UNICODE Selon la définition de la macro: Unicode code>. LI>
-
lpcolestr code> a été inventé par l'équipe OLE, car il utilise son comportement entre char et wchar_t code> en fonction de la définition de ole2ansi code> li> li>
-
lpcwstr code> est un wchar_t code> string li>
-
bstr code> est un lpoletr qui a été alloué à Sysallocstring. Li>
-
lpcwchar code> est un pointeur sur un seul caractère large constant. li>
ul>
Ils sont en fait tous plutôt différents. Ou du moins, étaient différents différents. OLE a été développée - et besoin de chaînes larges tandis que l'API Windows était toujours Win16 et n'a pas pris en charge de larges chaînes de manière nativement. P>
Également, les premières versions de la Windows SDK n'ont pas utilisée WCHAR_T pour WCHAR mais non signé. Le SDK Windows sur GCC devient intéressant AS - IM a conduit à croire que GCC 32bit a une 32 bits WRCHAR_T - sur des compilateurs 32 bits WRCHAR_T, WRCHAR serait défini comme un type abrégé non signé ou un autre type de 16bits sur ce compilateur. P>
Cela semble être la réponse plus précise concernant «LPColestr».