[API Windows] Pourquoi cette foultitude dans les types ?

Pourquoi cette foultitude dans les types ? [API Windows] - C++ - Programmation

Marsh Posté le 09-12-2002 à 13:34:36    

CHAR, TCHAR, WCHAR, PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR, LPCCH, PCCH, LPCSTR, PCSTR...
 
Pourquoi ? Quel usage ? Vous faites comment vous ?


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 13:34:36   

Reply

Marsh Posté le 09-12-2002 à 13:35:48    

j'utilise les types demandés par les fonctions de l'API, genre si la fonction veut un CHAR je lui donne un CHAR [:dawa]
 
Mais je dois de toute façon convertir ça à partir de LongString/AnsiString/WideString :whistle:


Message édité par antp le 09-12-2002 à 13:36:16

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-12-2002 à 13:37:01    

Waouh, rapide monsieur P. :jap: Cela étant, pourquoi a t'on besoin d'une telle quantité de type ?


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 13:37:14    

:pt1cable:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:40:31    

Tiens j'en ai oublié dans les char et autres :
PTCHAR, LPWSTR, LPTCH, PTCH, PTSTR, LPTSTR, LPCWSTR LPCTSTR, LPSTR, LPTCH, PTCH, PTSTR, LPTSTR, LPCSTR, LPCTSTR !
 
Si y a des doublons, j'en suis désolé.


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 13:40:58    

Reply

Marsh Posté le 09-12-2002 à 13:47:26    

ben ca montre le niveau d'intelligence des dev de windows. et puis au moins, vu le nombre de trucs incohérent dans l'API, je ne vois qu'une explication. vu le nombre de bordels, la question de la maintenance du code ne se pose meme pas: on en rajoute une couche a chaque fois avec une nouvelle batterie de type. c'est sans fin. y a que microsoft pour réinventer les char  :lol:
 
et pis quand ils développaient de nouveux types de données, leur spec devait etre tellement beton, le comportement tellement bien défini maitrisé et compris  :pt1cable:), qu'il etait impossible d'apporter de modifications. ou alors les programmeurs etaient autistes et avaient chacun l'ambition de réinventer l'o chaude.
 
 
je ne vuaillon po d'otreu aisplikation


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:52:37    

En fait l'un des problèmes de Windows, c'est que le soft n'est pas unique, mais se décline en plusieurs versions. D'après ce que Petzold explique dans son best seller, Windows 98 contrairement à NT ne supporte pas Unicode, d'où une première dualité sur les identificateurs. Ensuite, il y a parmi les identificateurs un certain nombre de macros pour adresser ce problème de dualité. Cependant cela ne me satisfait pas comme raisonnement. Même en divisant par trois le nombre des identificateurs, ça fait trop. D'où ma question.


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 13:57:11    

ben le developpement a manqué de synchronisation et les developpeurs n'ont pas su factoriser leur code et voir ce qui pouvait servir ailleurs. alors chacun a fait sa petite sauce pour un problème donné sans penser à un truc générique :spamafote:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:58:50    

pareil en C++, ya plein de types à la con dans tous les sens genre les CString....


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 09-12-2002 à 13:58:50   

Reply

Marsh Posté le 09-12-2002 à 14:02:48    

Moralité [:tonton_benou] ! Mais là n'est pas le sujet. Si des gurus trainent dans le coin... Même ceux de developpez.com (OK, spadrole) !


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 14:03:00    

Taz@PPC a écrit :

pareil en C++, ya plein de types à la con dans tous les sens genre les CString....


spourça le C c'est mieux : C'est "char" tout le temps mais défois y'a une "*" ... :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 09-12-2002 à 14:03:07    

j'ai un début d'explication car il m'arrive parfois d'utiliser ce type de notation.  Les préfixes donnent un renseignement sur le type de données manipulées (jusque là j'assume que vous le saviez déjà ;))
 
LP = Long Pointer
P = Pointer (short?)
C = Constant?
par contre le T je vois pas bien ce que ça veut dire.
 
WCHAR ce serait pas un caractère unicode?
NP je vois pas bien non plus mais à mon avis il y a une explication logique derrière tout ça.  Je ne pense pas, contrairement à l'avis général, que ce soit un brol quelconque fait sans concertation (du moins j'aime à le croire) ;)
 
Je vois pas, par contre, pas la différence entre PCHAR et PCH.

Reply

Marsh Posté le 09-12-2002 à 14:05:11    

drasche a écrit :

j'ai un début d'explication car il m'arrive parfois d'utiliser ce type de notation.  Les préfixes donnent un renseignement sur le type de données manipulées (jusque là j'assume que vous le saviez déjà ;))
 
LP = Long Pointer
P = Pointer (short?)
C = Constant?


ben perso je préfère lire "char *" que "LPCSTR"  [:sinclaire]

Reply

Marsh Posté le 09-12-2002 à 14:06:11    

Alors si j'ai bien suivi ce que j'ai appris de Petzold, WCHAR c'est le pendant de char ou CHAR pour Unicode, et TCHAR c'est une macro pour parler de char ou WCHAR selon que UNICODE est défini dans le programme (un #define donc).


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 14:06:27    

DarkOli a écrit :


spourça le C c'est mieux : C'est "char" tout le temps mais défois y'a une "*" ... :D


 
heu tous les types cités par Cherrytree sont des types C vu que l'API Windows est à la base pour du C :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-12-2002 à 14:07:40    

drasche a écrit :


NP je vois pas bien non plus mais à mon avis il y a une explication logique derrière tout ça.  


 
NP = null pointer, c'est pour quand tu veux mettre des bugs dans ton code. Logique que ce soit prévu au niveau de l'API Windows :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-12-2002 à 14:08:20    

Sinon, pourquoi faire une distinction entre les suffixes CHAR, CH et STR. C'est certainement évident, mais je vois pas.


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 14:17:58    

ben CHAR pour un simple char et STR pour toute une chaîne de caractères.  En C il y a une différence subtile en ce sens qu'on utilise les simple quotes (';) pour un simple char et les double quotes (" ) pour les chaînes de caractères. (mais ça n'a probablement rien à voir ;))

Reply

Marsh Posté le 09-12-2002 à 14:24:26    

lorill a écrit :


ben perso je préfère lire "char *" que "LPCSTR"  [:sinclaire]  


 
Sauf que LPCSTR ajoute la notion de chaine CONSTANTE pour le compilateur...

Reply

Marsh Posté le 09-12-2002 à 14:26:44    

El_Gringo a écrit :


 
Sauf que LPCSTR ajoute la notion de chaine CONSTANTE pour le compilateur...

On peut toujours recourir au spécificateur const, donc je suis pas sûr que ce soit bien vu d'avoir créé un nouvel identificateur.


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 14:32:57    

Cherrytree a écrit :

On peut toujours recourir au spécificateur const, donc je suis pas sûr que ce soit bien vu d'avoir créé un nouvel identificateur.


 
Ben, c'est plus concis d'avoir un type pour ça.
Dans certaines normes de programmation C (je sais pas si ça fait partie des normes officielles), on dit que, pour chaque nouveau typedef, on doit définir un type pointeur sur ce type (préfixé par LP). Moi je trouve pas si mal l'histoire du LPC pour "const". Quand on à l'habitude, c plus rapide.

Reply

Marsh Posté le 09-12-2002 à 14:34:25    

Taz@PPC a écrit :

ben le developpement a manqué de synchronisation et les developpeurs n'ont pas su factoriser leur code et voir ce qui pouvait servir ailleurs. alors chacun a fait sa petite sauce pour un problème donné sans penser à un truc générique :spamafote:


au contraire je pense plutôt qu'il s'agissait de définir des standards au niveau typage.  Evidemment ça ne sert à rien au niveau d'un simple EXE mais dès lors qu'on s'attaque aux DLLs, il y a grandement intérêt à ne pas se mélanger les pinceaux au niveau des types pointeurs, et je pense que c'est précisément ce qu'ils ont voulu éviter.  Faut pas oublier que la moyenne d'âge des développeurs chez MS est extrêmement basse (moi même je crois que je suis bon pour la retraite :D) et donc, programmeurs peu expérimentés...

Reply

Marsh Posté le 09-12-2002 à 14:44:39    

CHAR = 8 bits
WCHAR = 16 bits
PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR = Pointeur sur des chars (ou des strings) de 8 bits avec les distinctions entre les deux tailles de pointeurs qui coexistent sous les windows 16 bits.
LPCCH, PCCH, LPCSTR, PCSTR = même chose pour des constantes.
PWCHAR, LPWCH, PWCH, NWPSTR, LPWSTR, PWSTR = Pointeur sur des chars (ou des strings) de 16 bits .
WCHAR, LPCWCH, PCWCH, LPCWSTR, PCWSTR = même chose pour des constantes.
 
TCHAR (et ses déclinaisons) est le mode générique...Si UNICODE est définit, il équivaut à WCHAR.
 
etc.
 
Autrement dis, tout a une raison ( ou...presque :) ) La raison principale étant d'avoir des types dont le codage est fixe (sur 8 bits, sur 16, etc.)


Message édité par Willyzekid le 09-12-2002 à 14:50:00

---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 14:47:16    

drasche a écrit :


Faut pas oublier que la moyenne d'âge des développeurs chez MS est extrêmement basse (moi même je crois que je suis bon pour la retraite :D) et donc, programmeurs peu expérimentés...


 
Les programmeurs de MS sont tous un peu des têtes qui sortent de la plupart des grosses universités...et ces mecs là n'y rentrent même pas en temps que programmeurs mais en tant que QA après avoir passé 7 entretiens!
La moyenne d'âge est basse chez les programmeurs de base mais pas l'intelligence ;)


Message édité par Willyzekid le 09-12-2002 à 14:48:28

---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 14:48:35    


 
Je me la garde pour vendredi celle-là


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 09-12-2002 à 14:51:39    

sachant que ms, comme les autres, recrute des ingenieurs tout juste diplomés, qui n'ont jamais eu le moindre cours d'informatique, y'a de quoi...

Reply

Marsh Posté le 09-12-2002 à 14:55:37    

lorill a écrit :

sachant que ms, comme les autres, recrute des ingenieurs tout juste diplomés, qui n'ont jamais eu le moindre cours d'informatique, y'a de quoi...


 
décidement la rumeur est tenace :)


Message édité par Willyzekid le 09-12-2002 à 14:56:04

---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 14:57:08    

Willyzekid a écrit :


décidement la rumeur est tenace :)


 
Spa une rumeur ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 09-12-2002 à 14:57:43    

Willyzekid a écrit :


décidement la rumeur est tenace :)


tu veux que je te montre les papiers qu'a reçu ma soeur ?
Ms, ingésoft, et d'autres...

Reply

Marsh Posté le 09-12-2002 à 14:59:06    

lorill a écrit :


tu veux que je te montre les papiers qu'a reçu ma soeur ?
Ms, ingésoft, et d'autres...


 
huh? oui montre je suis curieux !


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 15:00:28    

Willyzekid a écrit :


huh? oui montre je suis curieux !


faudra au moins attendre ce week end, et voir si elle l'a pas basardé. je vais essayer d'y penser, sinon MP moi samedi pour me le rappeler

Reply

Marsh Posté le 09-12-2002 à 15:01:05    

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  La réponse est sûrement là-dedans?  Ingé info ou ingé tout court?  Chez nous on prend de tout. Ingés infos, ingés en chimie, commercial, des mines, etc...  Pourquoi MS ferait-il différemment?

Reply

Marsh Posté le 09-12-2002 à 15:03:18    

drasche a écrit :

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  


 :non: c'était sur arte, et ca parlait que de ceux devenus millionaires et plus motivés du tout

Reply

Marsh Posté le 09-12-2002 à 15:03:24    

drasche a écrit :

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  


 
Je l'ai vu. Ca faisait très "pauvre petite fille riche" quand même.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 09-12-2002 à 15:05:36    

drasche a écrit :

Chez nous on prend de tout. Ingés infos, ingés en chimie, commercial, des mines, etc...  Pourquoi MS ferait-il différemment?


 
Parce que MS quand ils font leur recrutement ont l'embarras du choix... :)


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 09-12-2002 à 15:10:51    

Willyzekid a écrit :

CHAR = 8 bits
WCHAR = 16 bits
PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR = Pointeur sur des chars (ou des strings) de 8 bits avec les distinctions entre les deux tailles de pointeurs qui coexistent sous les windows 16 bits.
LPCCH, PCCH, LPCSTR, PCSTR = même chose pour des constantes.
PWCHAR, LPWCH, PWCH, NWPSTR, LPWSTR, PWSTR = Pointeur sur des chars (ou des strings) de 16 bits .
WCHAR, LPCWCH, PCWCH, LPCWSTR, PCWSTR = même chose pour des constantes.
 
TCHAR (et ses déclinaisons) est le mode générique...Si UNICODE est définit, il équivaut à WCHAR.
 
etc.
 
Autrement dis, tout a une raison ( ou...presque :) ) La raison principale étant d'avoir des types dont le codage est fixe (sur 8 bits, sur 16, etc.)

OK, ça tient debout.
 
Maintenant, dans une famille comme par exemple : PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR pourquoi autant d'identifiants ? ça en fait 6 pour pointer des chars. Alors tu dis que c'est pour faire la distinction entre deux tailles de pointeurs. Moi je réponds qu'il y en a peut-être 4 de trop alors. Non ?


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 15:46:19    

Moi je vois pas la différence entre CH et CHAR.  Par contre clairement, on peut pointer sur un CHAR ou un STRing, la différence peut être pertinente.

Reply

Marsh Posté le 09-12-2002 à 17:01:04    

drasche a écrit :

Moi je vois pas la différence entre CH et CHAR.  Par contre clairement, on peut pointer sur un CHAR ou un STRing, la différence peut être pertinente.

J'uppe à tous hasards. Cette question est intéressante.
 
De plus vos habitudes de programmation (faites-vous comme antp ? avez-vous une autre manière de faire ?) m'intéressent. Donc up.


---------------
Le site de ma maman
Reply

Marsh Posté le 09-12-2002 à 17:02:36    

bhen s'ils font comme moi c'est qu'ils utilisent Delphi, ou à la limite C++Builder :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed