Bonjour,
existe t'il ,en C, des outils qui fournissent
1- des exception?
j'ai trouvé ça pour l'instant http://www.on-time.com/ddj0011.htm
2- une gestion de la mémoire en RAII ?
la j'ai rien trouvé en C
merci.
Bonjour,
existe t'il ,en C, des outils qui fournissent
1- des exception?
j'ai trouvé ça pour l'instant http://www.on-time.com/ddj0011.htm
2- une gestion de la mémoire en RAII ?
la j'ai rien trouvé en C
merci.
Tu peux aussi voir ce qu'il y a dans les differents framework de Laurent Deniau (http://ldeniau.web.cern.ch/ldeniau/html/oopc.html).
Bon, est-ce qu'il est vraiment judicieux d'utiliser des frameworks genre de l'OO ou les exceptions en C là ?
Parceque franchement le C c'est le C, et on n'a pas, à ma connaissance, inventé le C++ pour les poules du voisin! si?
Compil your life guy!
The Aures Project
L'utilisation d'un framework OO en C plutôt que C++ peut se justifier à mon avis par les raisons suivantes:
- Aucun compilateur n'est disponible pour la plateforme cible (ou alors un tel compilateur est inaccessible pour des questions de coûts)
- C90 est probablement le langage le plus portable à l'heure actuelle.
- Le langage C possède une ABI bien définie, ce qui facilite la création de passerelles (bindings) entre une bibliothèque écrite en C ou en C OO et d'autres langages.
- Certains programmeurs utilisent le C tout simplement parce que c'est le langage qu'ils connaissent le mieux. Un framework OO leur permet alors de bénéficier des avantages que peut offrir la programmation orienté-objet, notamment au niveau de l'organisation du code.
L'inconvénient principal que je vois concernant l'utilisation d'un framework OO particulier est que les programmeurs participant au projet devront se former sur son utilisation. Il est en effet plus facile de recruter des programmeurs possédant de l'expérience en C++ que des programmeurs ayant déjà entendu parler de ooc-2.0 ou COS. GObject jouit d'une popularité plus évidente, notamment grâce aux projets GTK+ et GNOME, mais l'utilisation de ce framework est relativement complexe.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Pour l'OO. Ben je voit pas quoi te repondre. Tu connait Glib? Gtk+? GTS?
C'est du C avec de l'OO ( ou j'ai peut être pas compris).
Thierry Chappuis as bien répondu sur ce point...
Sinon, sait tu ce qu'est le RAII ?
Développant en C++, je vais bientôt aller sur un projet en C-objet et C++.
Je cherche donc quelques equivalence
Je ne connais pas de moyen d'implanter RAII (Resource Acquisition Is Initialization) en C. Pour ce faire, il faudrait qu'il existe un moyen d'appeler automatiquement le destructeur d'un objet à la sortie du bloc dans lequel il a été définit. En C, l'appel d'un destructeur ne peut se faire (à ma connaissance) que de manière explicite.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
J'ai récemment posté un monstre à base de fonctions et macros sur ce thème. Par contre, j'ai la flemme de chercher et il y avait quelques bugs (notamment, on ne pouvait pas utiliser "return" pour retourner une valeur)...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Tu parles de ce post? http://www.developpez.net/forums/sho...98&postcount=6. Je vais regarder ça de plus près.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Oui.
Magnifique, non?
Il faudra que je pense à poster la dernière version, mais en .zip cette fois...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour,
juste deux question :
- La partie C++ est uniquement pour ne pas réimplementer la pile?
- pourquoi "Thread-local data structure" ?
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //Thread-local data structure. struct threadFrameMemory { struct frame * pCurrentTopFrame; };
Bonjour,
- Pour être précis: Chaque structure "frame" peut contenir une liste de couples (pointeur de fonction, pointeur vers l'objet à détruire). Les fonctions sont appelées en ordre inverse de leur ajout lors de la destruction de la "frame", donc cette liste est une pile. Et comme je n'avais pas de fonctions "liste" ou "pile" en C sous la main, j'ai décidé d'utiliser une classe standard C++ pour ça.
- Là, il y a deux problèmes liés:
- J'ai besoin d'une variable globale pour ne pas avoir à passer systématiquement un pointeur supplémentaire aux fonctions
- Une variable globale, ça marche bien en mono-thread, mais pas en multithread.
Donc, j'utilise du Thread-Local Storage (TLS) : Chaque thread possède sa propre variable "globale". Mais si tu fais un simple programme monothread, tu peux remplaçer cela par une simple variable globale...
Donc, mon code est à la fois réentrant et thread-safe: Réentrant parce que la variable globale sert pour une pile, thread-safe parce que chaque variable n'est vue que par un thread et un seul...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
pour ceux que cela interesse.
j'ai trouvé ca
http://c.developpez.com/sources/?page=XII#MEMOIRE_cmm
Attention, gestion de mémoire et RAII sont deux choses distinctes, hein...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
La RAII s'applique à toute ressource: Mémore, fichier ouvert, verrou, ou même indentation d'un fichier de log.
RAII, c'est tout ce qu'on peut faire automatiquement avec le destructeur d'une classe C++.
La gestion de mémoire, c'est la gestion de mémoire. Tu peux y faire des objets à comptage de références, un système de ramasse-miettes, un traceur d'allocations et de fuites de mémoire, etc.
Mon code, il est fait pour la RAII, pas en particulier pour la gestion de mémoire.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager