|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Bienvenue dans le troisième article de la série « le C++ expressif », une série d'articles consacrés aux Domain-Specific Embedded Language (DSEL) et à Boost.Proto, une bibliothèque pour les implémenter en C++.
Dans cet article, Eric Niebler aborde le problème délicat des messages d'erreurs générés par les templates et surtout le fait que ce n'est pas une fatalité. Il insiste en particulier sur le fait qu'il est de la responsabilités des concepteurs de bibliothèques de faire en sorte que les messages d'erreurs soient compréhensibles par les utilisateurs. Le C++ expressif n° 3 : pourquoi les erreurs des templates posent des problèmes et qu'est-ce que vous pouvez faire pour ça ? Pensez-vous que la compléxité de message d'erreurs générés par les templates sont un frein à leurs utilisation ? Quelles techniques utilisez-vous pour générer des messages d'erreurs compréhensibles ?Retrouvez l'ensemble des articles de la série « Le C++ expressif » sur la page d'index.
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
10
|
|
|
#2 | ||
|
Expert Confirmé
![]() Développeur informatique Inscription : décembre 2008 Messages : 777 ![]() |
Citation:
Pensez-vous que la compléxité de message d'erreurs générés par les templates sont un frein à leurs utilisation ?100 fois OUI. Une erreur dans l'usage d'un template avec G++ va générer des dizaines de lignes d'erreurs, qui dépassent largement les 80 caractères. Comprendre: il faut scroller, et pas qu'un peu. Sachant que la plus grosse partie de ces fameuses erreurs résulte dans le fait d'afficher les paramètres de chaque template. Y compris ceux par défaut (qu'on à donc pas changé et donc dont on se cogne). Exemple concret: std::unique_ptr prends 2 paramètres: le type, et la fonction de nettoyage. La fonction de nettoyage par défaut utilisant elle-même un type template utilisant le 1er template, on se retrouve vite avec un truc immonde et illisible. Idem pour les implémentations, elles sont généralement proprement imbuvables, même si à force je commence à comprendre vaguement comment ça marche. Bon, c'est sûr, une fois que c'est compilé, ça marche bien... Quelles techniques utilisez-vous pour générer des messages d'erreurs compréhensibles ?A la main malheureusement: je copie le message d'erreur et je vire tous les paramètres auxquels je n'ai pas touchés dans le code. Ca divise la taille du message par 3 minimum et c'est directement plus lisible. Mais je vais lire cet article et voir si le résultat est bon. Si c'est le cas, je me ferais un plaisir d'oublier ma vieille "méthode"... [edit] Citation:
Suggestions: Remplacer les occurrences de C++0x par C++11 Le lien vers "l'article précédent" renvoie à la description de l'article. Boucle infinie neuronale? Bon, certes, cette description contiens un lien vers une sorte de sommaire, mais bon, tant qu'a faire, autant faire un vrai lien, ou ne pas mettre de lien à ce moment la. |
||
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Attention, le propos n'est pas trouver une méthode pour comprendre un message d'erreur abscons, mais de modifier les messages d'erreurs générés.
Un exemple, pour être plus clair (provenant de Boost.Concept) Si on prend un tableau de complexe et que l'on essaie de le trier : Code :
Citation:
Alors qu'il suffit d'ajouter un assert adéquate pour générer un message compréhensible. Par exemple (pas sur du tout de mon code...) : Code :
static_assert(Less<T>, "T must be Less comparable");
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|||
|
00
|
|
|
#4 | |||
![]() ![]() |
Salut,
Citation:
Citation:
Si les implémenteurs de la STL pouvaient s'organiser pour les rendre moins complexes, j'en serais ravi Citation:
Dans des projets plus anciens, je fais "avec", en fonction de ce que le projet permet
__________________
en bas de page
|
|||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Pierre Ingénieur développement logiciels Inscription : juin 2007 Messages : 1 220 ![]() |
J'avais un script pour reformater ces messages d'erreurs, que je pipais aux compilations. Sauf que je l'ai perdu
__________________
Mes principes de bases du codeur qui veut pouvoir dormir:
|
|
00
|
Copyright © 2000-2013 - www.developpez.com