| el muchacho |
sligor a écrit :
le compilateur n'a pas forcement accès aux sources mais que aux headers, et donc le compilateur ne sait pas quels exceptions une fonction peut générer. enfin je suis pas expert exceptions mais il me semble que c'est ça :o
|
Les exceptions pourraient être encodées dans la signature des libs, non (sauf sur les typedef de pointeurs de foncitons) ? Wikipedia: "The C++ programming language introduces an optional mechanism for checked exceptions, called exception specifications. By default any function can throw any exception, but this can be limited by a throw clause added to the function signature, that specifies which exceptions the function may throw. Exception specifications are not enforced at compile-time. Violations result in the global function std::unexpected being called.[16] An empty exception specification may be given, which indicates that the function will throw no exception. This was not made the default when exception handling was added to the language because it would require too much modification of existing code, would impede interaction with code written in another language, and would tempt programmers into writing too many handlers at the local level.[16] Explicit use of empty exception specifications can, however, allow C++ compilers to perform significant code and stack layout optimizations that normally have to be suppressed when exception handling may take place in a function.[7] Some analysts view the proper use of exception specifications in C++ as difficult to achieve.[17] In the upcoming C++ language standard (C++0x), the use of exception specifications as specified in the current version of the standard (C++03), is deprecated." Moyennant quoi Herb Sutter conclut que:
Citation :
So here’s what seems to be the best advice we as a community have learned as of today: Moral #1: Never write an exception specification. Moral #2: Except possibly an empty one, but if I were you I’d avoid even that.
|
A partir du moment où on ne déclare plus les exceptions, ni le compilateur ni le programmeur ne peuvent plus vérifier grand chose de façon statique. Si je ne m'abuse, cela revient à dire: n'utilisez pas les exceptions pour la gestion des erreurs en C++ ? [:pingouino] mareek a écrit :
Bientot tu vas nous sortir qu'on peut formater un disque dur avec une balise html [:petrus75]
|
J'hésite entre le troll ou les jugements hâtifs dont tu as le secret, mais si tu relis mon message à masklinn, tu verras que Wikipedia confirme le lien historique entre les deux langages, lien qui est une quasi évidence quand on connait le nombre de langages d'usage courant existant dans les années 60. Et je maintiens qu'un code Fortran n'est pas fondamentalement différent de ce que pourrait être un code pour un compilateur Basic limité aux mots clé d'origine + le mot clé SUB pour les subroutines. Tu pourrais assez facilement écrire une moulinette Perl pour transformer le code TrueBasic de cette page (sauf les graphiques) en Fortran valide, les différences ne sont pas énormes.
Citation :
D'après mes collègues qui font de l'embarqué, ils utilisent soit du C, soit de l'assembleur, jamais du c++
|
Il y a embarqué et embarqué. La JVM qui tourne sur ton téléphone pour les jeux que tu télécharges, c'est aussi de l'embarqué. Mais pour la stack GSM, c'est du temps réel dur, elle est écrite en C + asm. Tout dépend des contraintes.
Spoiler :
Et avant que tu te précipites sur un autre post idiot, je me permets de rajouter que j'ai écrit professionnellement du Fortran ET du C++ en embarqué pour des missiles et des BSC GSM, donc je sais un minimum de quoi je cause. Pour le C++, effectivement, je n'utilisais pas d'exceptions, et sur les missiles, je ne faisais pas d'allocations dynamiques, mais j'utilisais quand même les templates, de façon modérée. |
|