Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1313 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Que pensez vous des handle en C?

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Que pensez vous des handle en C?

n°521063
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 23-09-2003 à 10:18:32  profilanswer
 

j'ai besoin d'avis:)...

mood
Publicité
Posté le 23-09-2003 à 10:18:32  profilanswer
 

n°521082
chrisbk
-
Posté le 23-09-2003 à 10:34:22  profilanswer
 

j'en pense sandwich au fraises
 
(tu veux pas un peu developper ?)

n°521085
Konar
Posté le 23-09-2003 à 10:35:41  profilanswer
 

clakance de la question.
 
alors vais apporter ma contribution : en win32, un handle c'est un void*, alors ce que j'en pense...
 
si ca réponds pas a la question, ben précise un peu plus les choses...

n°521108
LeGreg
Posté le 23-09-2003 à 11:30:22  profilanswer
 

Le cancer:
pour ou contre ?
 
LeGreg

n°521110
chrisbk
-
Posté le 23-09-2003 à 11:31:51  profilanswer
 

y'a t'il une mort apres la vie ?

n°521118
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 11:38:54  profilanswer
 

Pour le salon quel papier peint? :o
 
Heu si non une question plus précise ce serait bien ;)


---------------
Le Tyran
n°521152
Taz
bisounours-codeur
Posté le 23-09-2003 à 12:06:54  profilanswer
 

can you handle it ?

n°521165
*syl*
--> []
Posté le 23-09-2003 à 12:32:30  profilanswer
 

Does you or not ?

n°521183
Joel F
Real men use unique_ptr
Posté le 23-09-2003 à 12:47:40  profilanswer
 

[:drap]
 
quel tomik de qualitay :D


Message édité par Joel F le 23-09-2003 à 12:48:14
n°521196
Freekill
Electron libre…
Posté le 23-09-2003 à 13:00:18  profilanswer
 

Ca doit sûrement être cool?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
mood
Publicité
Posté le 23-09-2003 à 13:00:18  profilanswer
 

n°521207
drasche
Posté le 23-09-2003 à 13:15:53  profilanswer
 

faut-il tuer son chef de projet ou non? :o

n°521209
Freekill
Electron libre…
Posté le 23-09-2003 à 13:17:33  profilanswer
 

drasche a écrit :

faut-il tuer son chef de projet ou non? :o


 
 :non: C'est le patron qu'il faut tuer?  :D


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°521211
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-09-2003 à 13:19:25  profilanswer
 

fodger >> tu es prié de t'expliquer un peu plus, sinon je ferme ton topic ce soir.
 
les autres >> pas la peine de polluer avant de savoir exactement de quoi il retourne... :non:


---------------
J'ai un string dans l'array (Paris Hilton)
n°521342
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 23-09-2003 à 14:20:35  profilanswer
 

merci pour la richesse des commentaires :D...
 
Et bien pour développer un peu plus :  
admettons que nous ayons beaucoup de grosses structures...
 
Pour vous y'a t'il un intérêt à utiliser les handle pour travailler avec (genre 1 fonction avec un handle pour variable récupérer le(s) champ(s) qui nous interesse), plutôt que de déclarer directement les variables sur ces mêmes structures?  
 
Je me suis peut être mal exprimé:D...

n°521343
skeye
Posté le 23-09-2003 à 14:22:03  profilanswer
 

Fodger a écrit :

merci pour la richesse des commentaires :D...
 
Et bien pour développer un peu plus :  
admettons que nous ayons beaucoup de grosses structures...
 
Pour vous y'a t'il un intérêt à utiliser les handle pour travailler avec (genre 1 fonction avec un handle pour variable récupérer le(s) champ(s) qui nous interesse), plutôt que de déclarer directement les variables sur ces mêmes structures?  
 
Je me suis peut être mal exprimé:D...


Ouf, j'ai cru un instant que tu pensais être clair! :pt1cable:

n°521344
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 14:22:06  profilanswer
 

Fodger a écrit :

merci pour la richesse des commentaires :D...
 
Et bien pour développer un peu plus :  
admettons que nous ayons beaucoup de grosses structures...
 
Pour vous y'a t'il un intérêt à utiliser les handle pour travailler avec (genre 1 fonction avec un handle pour variable récupérer le(s) champ(s) qui nous interesse), plutôt que de déclarer directement les variables sur ces mêmes structures?  
 
Je me suis peut être mal exprimé:D...


 
 :heink: Et en français ça donne?


---------------
Le Tyran
n°521347
*syl*
--> []
Posté le 23-09-2003 à 14:22:52  profilanswer
 

:heink:  
 
Et tes handles, c'est pas des variables peut-être ? :p

n°521349
red factio​n
Posté le 23-09-2003 à 14:24:29  profilanswer
 

Fodger a écrit :

merci pour la richesse des commentaires :D...
 
Et bien pour développer un peu plus :  
admettons que nous ayons beaucoup de grosses structures...
 
Pour vous y'a t'il un intérêt à utiliser les handle pour travailler avec (genre 1 fonction avec un handle pour variable récupérer le(s) champ(s) qui nous interesse), plutôt que de déclarer directement les variables sur ces mêmes structures?  
 
Je me suis peut être mal exprimé:D...


 
mmhhh voidrait tu dire passer un pointeur sur une struct plutot que de passer tout les membres de la struct ???
 
 
dans ce cas oui c mieux, c plus facile pour appeler la fonction , puis c uniquement 4bytes a passer aussi  :D

n°521350
red factio​n
Posté le 23-09-2003 à 14:24:59  profilanswer
 

jsens que jai encore raconter une connerie

n°521351
red factio​n
Posté le 23-09-2003 à 14:25:08  profilanswer
 

:whistle:

n°521352
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 14:25:58  profilanswer
 

red faction a écrit :


 
mmhhh voidrait tu dire passer un pointeur sur une struct plutot que de passer tout les membres de la struct ???
 
 
dans ce cas oui c mieux, c plus facile pour appeler la fonction , puis c uniquement 4bytes a passer aussi  :D  


 
En fait ça dépend de l'architecture de la machine si on veut être pointilleux  :whistle: , mais c généralement moin gros qu'une structure ;)


Message édité par LetoII le 23-09-2003 à 14:26:51

---------------
Le Tyran
n°521383
gatorette
Posté le 23-09-2003 à 14:38:52  profilanswer
 

Bon, je vais essayer de formuler une opinion...
L'unique intérêt que je peut voir au Handle est de pouvoir manipuler des données sans rien savoir de ce qu'est réellement ce Handle (pointeur, identifiant...). L'utilisateur ne peut normalement pas utiliser ce Handle en dehors des fonctions que tu as défini. Je vois ça plus comme un moyen de protection qu'autre chose.


---------------
each day I don't die is cheating
n°521393
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 23-09-2003 à 14:42:24  profilanswer
 

red faction a écrit :


 
mmhhh voidrait tu dire passer un pointeur sur une struct plutot que de passer tout les membres de la struct ???
 
 
dans ce cas oui c mieux, c plus facile pour appeler la fonction , puis c uniquement 4bytes a passer aussi  :D  


 
oué dans ce genre là:p... donc pour toi ça vaut le coup... parce que j'ai tendance à penser que parfois ça compliquer très rapidement les choses, et occuper plus de place mémoire...

n°521395
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 23-09-2003 à 14:43:35  profilanswer
 

gatorette a écrit :

Bon, je vais essayer de formuler une opinion...
L'unique intérêt que je peut voir au Handle est de pouvoir manipuler des données sans rien savoir de ce qu'est réellement ce Handle (pointeur, identifiant...). L'utilisateur ne peut normalement pas utiliser ce Handle en dehors des fonctions que tu as défini. Je vois ça plus comme un moyen de protection qu'autre chose.


 
là tout à fait d'accord...

n°521400
red factio​n
Posté le 23-09-2003 à 14:46:47  profilanswer
 

Fodger a écrit :


 
oué dans ce genre là:p... donc pour toi ça vaut le coup... parce que j'ai tendance à penser que parfois ça compliquer très rapidement les choses, et occuper plus de place mémoire...


 
par exemple pour netbios (bon je c complement depassé et plus personne nutilise ca) il ya une 20aine de parametres a passer :
 
on remplit la structure puis on la passe a la fonction tout simplement
 
jvois mal : Netbios (param1 ,param2, param3 , ... , param 23,..)

n°521403
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 23-09-2003 à 14:50:23  profilanswer
 

red faction a écrit :


 
par exemple pour netbios (bon je c complement depassé et plus personne nutilise ca) il ya une 20aine de parametres a passer :
 
on remplit la structure puis on la passe a la fonction tout simplement
 
jvois mal : Netbios (param1 ,param2, param3 , ... , param 23,..)


 
La structure directement, pas un handle?

n°521419
red factio​n
Posté le 23-09-2003 à 15:10:56  profilanswer
 

Fodger a écrit :


 
La structure directement, pas un handle?


 
un pointeur sur struct

n°521858
Angel_Doog​las
Le dernier des humains
Posté le 24-09-2003 à 01:42:56  profilanswer
 

gatorette a écrit :

Bon, je vais essayer de formuler une opinion...
L'unique intérêt que je peut voir au Handle est de pouvoir manipuler des données sans rien savoir de ce qu'est réellement ce Handle (pointeur, identifiant...). L'utilisateur ne peut normalement pas utiliser ce Handle en dehors des fonctions que tu as défini. Je vois ça plus comme un moyen de protection qu'autre chose.


 
protection contre quoi?


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
n°521980
gatorette
Posté le 24-09-2003 à 11:15:16  profilanswer
 

[img]

Angel_Dooglas a écrit :

protection contre quoi?


 
Protection contre une mauvaise utilisation.
 
Par exemple, si je crée une bibliothèque permettant de gérer des images. J'imagine que je stocke mes images dans une structure avec la largeur, la hauteur, le nombre de bits par pixel et enfin un pointeur vers une zone mémoire contenant l'image brute. Je propose également des fonctions permettant de modifier l'image (rotation, recadrage...). Pour que ces fonctions puissent fonctionner, il faut qu'elles sachent sur quelle image elles doivent agir.
Donc soit je laisse tout transparent et je demande à l'utilisateur de me passer un pointeur vers la structure image, soit je demande handle et ma fonction pourra aller chercher ces informations elle-même.
Le problème avec la première solution est que l'utilisateur de ma bibliothèque a accès à toutes les informations sur mon image. Si il souhaite modifier la largeur de l'image, il peut le faire et donc faire planter toutes mes fonctions après. Par contre, avec un handle, la façon dont sont gérées les images reste opaque. Il ne peut donc pas modifier ma structure et tout faire planter.


---------------
each day I don't die is cheating
n°522189
BifaceMcLe​OD
The HighGlandeur
Posté le 24-09-2003 à 14:15:50  profilanswer
 

Bref, ça s'appelle l'encapsulation. Un des concepts fondamentaux de la programmation objet... et un des moyens les plus puissants qu'on ait trouvé pour réduire statistiquement le nombre de bugs d'un programme.

n°522192
Taz
bisounours-codeur
Posté le 24-09-2003 à 14:20:23  profilanswer
 

BifaceMcLeOD a écrit :

Bref, ça s'appelle l'encapsulation. Un des concepts fondamentaux de la programmation objet... et un des moyens les plus puissants qu'on ait trouvé pour réduire statistiquement le nombre de bugs d'un programme.

ben non, les handles, c'est des types opaques, on ne sait pas ce que c'est, on sait juste à quoi ça sert, ce qui est quand même différent je pense

n°524696
Angel_Doog​las
Le dernier des humains
Posté le 27-09-2003 à 19:01:15  profilanswer
 

gatorette a écrit :

[img]
 
Protection contre une mauvaise utilisation.
 
Par exemple, si je crée une bibliothèque permettant de gérer des images. J'imagine que je stocke mes images dans une structure avec la largeur, la hauteur, le nombre de bits par pixel et enfin un pointeur vers une zone mémoire contenant l'image brute. Je propose également des fonctions permettant de modifier l'image (rotation, recadrage...). Pour que ces fonctions puissent fonctionner, il faut qu'elles sachent sur quelle image elles doivent agir.
Donc soit je laisse tout transparent et je demande à l'utilisateur de me passer un pointeur vers la structure image, soit je demande handle et ma fonction pourra aller chercher ces informations elle-même.
Le problème avec la première solution est que l'utilisateur de ma bibliothèque a accès à toutes les informations sur mon image. Si il souhaite modifier la largeur de l'image, il peut le faire et donc faire planter toutes mes fonctions après. Par contre, avec un handle, la façon dont sont gérées les images reste opaque. Il ne peut donc pas modifier ma structure et tout faire planter.


 
Merci, c'est effectivement de l'encapsulation, je ne savais pas que cela existait de maniere aussi "evoluee" en C.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
n°524745
os2
Posté le 27-09-2003 à 20:16:50  profilanswer
 

BifaceMcLeOD a écrit :

Bref, ça s'appelle l'encapsulation. Un des concepts fondamentaux de la programmation objet... et un des moyens les plus puissants qu'on ait trouvé pour réduire statistiquement le nombre de bugs d'un programme.


 
un des moyens les plus puissants pour réduire les bug se sont plutôt suivre des méthodes de travail telle qu'on en retrouve dans des normes ieee, rup, iso...


---------------
Borland rulez: http://pages.infinit.net/borland
n°524776
nraynaud
lol
Posté le 27-09-2003 à 22:55:37  profilanswer
 

Fodger a écrit :

merci pour la richesse des commentaires :D...
 
Et bien pour développer un peu plus :  
admettons que nous ayons beaucoup de grosses structures...
 
Pour vous y'a t'il un intérêt à utiliser les handle pour travailler avec (genre 1 fonction avec un handle pour variable récupérer le(s) champ(s) qui nous interesse), plutôt que de déclarer directement les variables sur ces mêmes structures?  
 
Je me suis peut être mal exprimé:D...

Non c'est naze. On utilise ça uniquement si on veut pas que le dev puisse toucher aux structures ou si il est impossible de prendre un pointeur dessus (style la structure est en espace noyau, comme dans le cas des fichiers, ou quand elle est physiquement sur une autre machine).
 
En plus ça rajoute des indirections inutiles que le compilo ne saura pas virer. Et ça n'apporte strictement rien à part de la complexité.

n°524779
HelloWorld
Salut tout le monde!
Posté le 28-09-2003 à 00:20:40  profilanswer
 

Les handles permettent d'obliger le programmeur à passer par l'interface de ton choix et lui interdisent de procéder autrement (routines maisons...). 2 avantages principaux. Le premier a été dit : la sécurité. En empêchant le programmeur de modifier directement les objets on est assuré qu'ils sont toujours valides. Qui plus est on peut contrôler leur utilisation (droits...).
Le 2° avantage est l'évolutivité : le code client n'est pas lié à une implémentation particulière des ojets manipulés. Tu peux alors en interne totalement modifier tes structures. Il te suffit de conserver la même interface pour rester compatible avec le code existant.
http://coding.bug.free.fr/win/hobj.htm
 
PS : c'est pas lié au langage C


Message édité par HelloWorld le 28-09-2003 à 00:21:56

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°524780
nraynaud
lol
Posté le 28-09-2003 à 00:24:12  profilanswer
 

HelloWorld a écrit :

Les handles permettent d'obliger le programmeur à passer par l'interface de ton choix et lui interdisent de procéder autrement (routines maisons...). 2 avantages principaux. Le premier a été dit : la sécurité. En empêchant le programmeur de modifier directement les objets on est assuré qu'ils sont toujours valides. Qui plus est on peut contrôler leur utilisation (droits...).
Le 2° avantage est l'évolutivité : le code client n'est pas lié à une implémentation particulière des ojets manipulés. Tu peux alors en interne totalement modifier tes structures. Il te suffit de conserver la même interface pour rester compatible avec le code existant.
http://coding.bug.free.fr/win/hobj.htm

On s'en fout de ça, on met des pointeurs, on documente pas la structure et on met des accesseurs et on la la même chose en version plus rapide.

n°524782
HelloWorld
Salut tout le monde!
Posté le 28-09-2003 à 00:28:16  profilanswer
 

AMHA tu décris une manière d'implémenter le mécanisme à partir de pointeurs. Il me semble que Win9x calcules les handles à partir des pointeurs "XORé" avec un obfuscator.
Le problème du undocumented c'est que des bidouilleur vont le documenter et les routines maisons vont voir le jour.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°524785
nraynaud
lol
Posté le 28-09-2003 à 00:46:42  profilanswer
 

HelloWorld a écrit :


Le problème du undocumented c'est que des bidouilleur vont le documenter et les routines maisons vont voir le jour.

ça on s'en fout, si c'est dans le même espace mémoire, c'est de toutes façons accessible, obfuscation à la con ou pas, à coup de debugger, c'est vite réglé.  
 
L'unique moyen de protéger une structure est de la sortir de l'espace mémoire du process (ce que fait le noyau par ex, en gardant les données sensibles associées au process dans son espace) auquel cas, une référence abstraite est l'unique moyen de savoir de quoi on parle dans les fonctions.

n°529196
BifaceMcLe​OD
The HighGlandeur
Posté le 02-10-2003 à 12:39:42  profilanswer
 

nraynaud a écrit :

On s'en fout de ça, on met des pointeurs, on documente pas la structure et on met des accesseurs et on la la même chose en version plus rapide.


Le problème, c'est qu'en C, pour pouvoir définir le pointeur sur structure, tu es obligé de définir la structure préalablement. Donc comme la définition du type pointeur est public, la définition de la structure est nécessairement publique, dans le .h aussi.
 
Autre solution, tu écris 2 .h, un public et un privé, le .h public définit une structure bidon -- sauf s'il est inclus par le .h privé -- et le .h privé définit la structure véritable. Du coup, l'utilisateur manipule quelque chose qui est en fait un pointeur sur la véritable structure de données, mais cette dernière lui est masquée. Donc pas d'indirection.
 
Mais par définition, ce que manipule l'utilisateur dans ce cas, ça s'appelle quand même un handle.  
 

n°529232
HelloWorld
Salut tout le monde!
Posté le 02-10-2003 à 13:26:20  profilanswer
 

Citation :

Le problème, c'est qu'en C, pour pouvoir définir le pointeur sur structure, tu es obligé de définir la structure préalablement. Donc comme la définition du type pointeur est public, la définition de la structure est nécessairement publique, dans le .h aussi.


 
Non, ou alors j'ai mal compris.
Une déclaration suffit, la définition vient dans le .c.
C'est même une encapsulation plus forte qu'en C++
 

Code :
  1. /* .h */
  2. struct Object;
  3. void InitObject( struct Object * o );
  4. /* .c */
  5. struct Object
  6. {
  7.     int var1;
  8.     int var2;
  9. };
  10. void InitObject( struct Object * o )
  11. {
  12.     o->var1 = 0;
  13.     o->var1 = 0;
  14. }


Message édité par HelloWorld le 02-10-2003 à 13:27:01

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Que pensez vous des handle en C?

 

Sujets relatifs
[ Delphi ] Récupérer le handle d'un process dont on connais le nom[jsp] vous pensez quoi de mon code ???
Que pensez vous de 4D ?que pensez-vous des nouvelles spécification de java 1.5
signification de handleQue pensez vous de ce code
Que pensez vous de php-nuke ?Vous pensez quoi de ce FEATURE ?
[PHP] Pour les pros --- Que pensez-vous de cette formation?problème de "handle" sur D5
Plus de sujets relatifs à : Que pensez vous des handle en C?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR