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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Que pensez vous des handle en C?

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

Reprise du message précédent :

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 02-10-2003 à 13:26:20  profilanswer
 

n°529350
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 02-10-2003 à 15:43:08  profilanswer
 

Taz a écrit :

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


 
Ce ne sont que de simples pointeurs d'adresse, ou alors j'ai rien capté:D...

n°529434
HelloWorld
Salut tout le monde!
Posté le 02-10-2003 à 16:53:18  profilanswer
 

Pour toi, tu sais pas ce que c'est, et tu te fous de ce que c'est.
En pratique, c'est souvent un nombre ou une adresse. C'est pas obligé, c'est celui qui écrit la lib qui décide.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°530140
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 03-10-2003 à 11:09:19  profilanswer
 

Mieux vaut savoir ce que c'est sinon t'es mal barré...

n°530161
gilou
Modérateur
Modzilla
Posté le 03-10-2003 à 11:30:18  profilanswer
 

Historiquement, le handle, c'est un truc inventé par microsoft dans windows 16 bits, quand ses mecanismes internes pouvaient changer l'adresse d'une structure et rendre un pointeur sur icelle invalide (fallait locker et unlocker la structure en memoire avant d'acceder/modifier ses champs).
Bref, c'etait un truc merdique, du a une gestion de la memoire merdique.  
Il en reste quelques traces dans les definitions de types de windows, mais apart dans le cas de l'utilisation de COM et des technologies derivées, ca correspoond a de vrais pointeurs maintenant, sauf erreur de ma part.
 
Le probleme du masquage des types en C quand on ecrit une APi est assez courant.
En general, la solution la plus frequente est:
1) tu as tes types internes pas connus de l'utilisateur
2) tu as tes types externes, connus de ton code et de l'utilisateur
3) les fonctions de l'API ne prennent que les types externes
4) Tous les parametres des fonctions de l'API sont
 * verifies (validité,...)
 * copiés en types internes. Copiés, ce qui fait que tout ce qui sera manipulé aura ete alloué par ton code, et ne se plantera pas sur une allocation mal faite dans le code utilisateur.
En plus, utiliser des types externes permet en general d'avoir une cohérence de nommage dans l'API.
A+,


Message édité par gilou le 03-10-2003 à 11:32:06

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°530194
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 03-10-2003 à 12:08:41  profilanswer
 

gilou a écrit :

Historiquement, le handle, c'est un truc inventé par microsoft dans windows 16 bits, quand ses mecanismes internes pouvaient changer l'adresse d'une structure et rendre un pointeur sur icelle invalide (fallait locker et unlocker la structure en memoire avant d'acceder/modifier ses champs).


Désolé de te contredire, vénérable, mais les handle existaient en programmation Amiga OS, bien avant l'arrivée de Windows 3 [:aloy]
Tu ouvrais une fenêtre avec intuition => tu récupérais un handle de fenêtre !


Message édité par Harkonnen le 03-10-2003 à 12:17:59

---------------
J'ai un string dans l'array (Paris Hilton)
n°530228
nraynaud
lol
Posté le 03-10-2003 à 12:45:47  profilanswer
 

Harkonnen a écrit :


Désolé de te contredire, vénérable, mais les handle existaient en programmation Amiga OS, bien avant l'arrivée de Windows 3 [:aloy]
Tu ouvrais une fenêtre avec intuition => tu récupérais un handle de fenêtre !

D'ailleur, sous unix, les handle de fichier, ça fait ... 30 ans que ça existe.
Mais hormis le cas de gilou que j'avais oublié (et pourtant sous palmOS c'est le même principe) c'est bien parce qu'on est pas dans le même espace mémoire qu'on a des handle.
 
sinon, on fait des pointeurs sur des structures un peu opaques mais de toutes façons, on sait que celui qui veut la modifier directement, il pourra. Alors qu'aller modifier la structure de description de ficheir sous unix, il faut déjà passer en mode noyau, et c'est plus balaise.

n°530246
HelloWorld
Salut tout le monde!
Posté le 03-10-2003 à 13:21:56  profilanswer
 

gilou là tu tolls...
Moi je trouve le mécanisme des handle très puissant, et je confirme que c'est bien plus vieux que MS (le + vieux que je connaisse est moi aussi les fichiers sous UNIX).
Et la gestion merdique de la memoire en Win16 était d'avantage de la faute d'intel que de MS...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°530274
gilou
Modérateur
Modzilla
Posté le 03-10-2003 à 13:45:32  profilanswer
 

HelloWorld a écrit :

gilou là tu tolls...
Moi je trouve le mécanisme des handle très puissant, et je confirme que c'est bien plus vieux que MS (le + vieux que je connaisse est moi aussi les fichiers sous UNIX).
Et la gestion merdique de la memoire en Win16 était d'avantage de la faute d'intel que de MS...


Oui, j'aurais pu preciser que les file handles etaient anterieurs. Mais c'etait l'exception qui confirmait la regle :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°530277
gilou
Modérateur
Modzilla
Posté le 03-10-2003 à 13:48:52  profilanswer
 

Harkonnen a écrit :


Désolé de te contredire, vénérable, mais les handle existaient en programmation Amiga OS, bien avant l'arrivée de Windows 3 [:aloy]
Tu ouvrais une fenêtre avec intuition => tu récupérais un handle de fenêtre !


Je connais rien a l'amiga OS, alors c'est bien possible.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 03-10-2003 à 13:48:52  profilanswer
 

n°530285
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 03-10-2003 à 13:59:45  profilanswer
 

Bon je les utilises tous les jours en fait (pas le choix, je bosse sur une grosse appli)... mais là où j'ai doute, c'est sur le risque de perdre les données en ram appelées à partir d'un hanlde...

n°533233
HelloWorld
Salut tout le monde!
Posté le 07-10-2003 à 13:41:07  profilanswer
 

:heink: :??:


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

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

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