Quand je parlais des header C, ce n'était pas pour privilégier std::cout par rapport à std::printf, mais à préciser qu'en C++ correct, on essaye d'employer les mécanismes d'isolation au maximum.
Donc j'aurais préférer lire :
#include <cstdlib>
j'en conviens, c'est du pinaillage. Mais ça indique que le programmeur qui a codé ces quelques lignes que C et C++ sont deux langages différents, dont même les types de base divergent parfois dans leur sémantique et leur implémentation.
Par exemple, le code suivant ne référence pas le même type d'objet en C et C++.
// En scope global:intconstc_counter;
Même comme je l'ai dit, ce n'est pas printf qui m'emmerde, c'est l'emploi bogué de snprintf.
Quand à prétendre employé printf pour éviter les buffer overflow, c'est une blague sympathique. C++ réduit le risque de buffer overflows parce qu'il nous éloigne des pointeurs. Plus on manipule de pointeurs, et en particulier de pointeurs nus, et plus on a de chance de créer du code compromis.
L'exemple canonique est std::vector<>, qui remplace avantageusement les pointeurs de pointeurs, sans aucun risque de buffer overflow.
[^] # Re: Brace yourselves, bullshit is ENDED
Posté par LupusMic (site web personnel, Mastodon) . En réponse à la dépêche Concours "Evenja Café", un nouveau paradigme de programmation. Évalué à 3.
Calmés ? Non, il faut dormir de temps à autre.
Quand je parlais des header C, ce n'était pas pour privilégier std::cout par rapport à std::printf, mais à préciser qu'en C++ correct, on essaye d'employer les mécanismes d'isolation au maximum.
Donc j'aurais préférer lire :
j'en conviens, c'est du pinaillage. Mais ça indique que le programmeur qui a codé ces quelques lignes que C et C++ sont deux langages différents, dont même les types de base divergent parfois dans leur sémantique et leur implémentation.
Par exemple, le code suivant ne référence pas le même type d'objet en C et C++.
Même comme je l'ai dit, ce n'est pas printf qui m'emmerde, c'est l'emploi bogué de snprintf.
Quand à prétendre employé printf pour éviter les buffer overflow, c'est une blague sympathique. C++ réduit le risque de buffer overflows parce qu'il nous éloigne des pointeurs. Plus on manipule de pointeurs, et en particulier de pointeurs nus, et plus on a de chance de créer du code compromis.
L'exemple canonique est std::vector<>, qui remplace avantageusement les pointeurs de pointeurs, sans aucun risque de buffer overflow.