m'a vraiment dérangé par l'inclusion de C stdlib fonctions sur l'espace de noms global et a fini par écrire des choses comme :: snprintf ou :: errno ou struct :: stat , etc, pour différencier de certaines de mes propres fonctions dans l'espace de noms englobant où ces fonctions c stdlib ont été utilisées. Puis j'ai découvert qu'il y avait un moyen de déclarer chaque fonction C stdlib dans l'espace de noms std (comme STL): il suffit d'inclure < c (lib)> au lieu de < (lib) .h> alors j'ai modifié mon codez l'utilisation de ces nouveaux "c pour C++".C stdlib .h est sur C++ et malloc/realloc
Sur Debian/GCC 4.3.4 J'ai eu 2 problèmes:
1) #error Ce fichier nécessite le support du compilateur et de la bibliothèque pour la prochaine \ norme ISO C++, C++ 0x. Ce support est actuellement expérimental et doit être \ activé avec les options du compilateur -std = C++ 0x ou -std = gnu ++ 0x.
2) utilisant std = C++ 0x mon programme compile très bien, mais je n'ai pas modifié :: snprintf ou :: temps, etc .. toutes les fonctions C stdlib est toujours sur l'espace de noms global = (! (non, je ne suis pas using namespace std même pas une fois)
Toute pensée?
Par exemple .. comment arrêter le c stdlib d'envahir mon espace de noms global? < c (lib)> est une fonctionnalité expérimentale de la prochaine norme C++ ou pourrait être utilisé en toute sécurité dès maintenant?
Ensuite, j'ai un autre doute qui mérite peut-être une nouvelle question .. il n'y a pas cmalloc. Je connais toute l'histoire du nouveau remplacement de malloc et pourquoi. mais pour les buffers simples à octets simples, il n'y a pas d'équivalent C++ de realloc. Je sais que les blocs de mémoire et la réallocation sont implémentés/si spécifiques, mais quand il y a des blocs de mémoire libres contigus, realloc fonctionne mieux qu'une nouvelle allocation de tampon et une nouvelle copie de mémoire.
Merci =)!
Pourquoi avez-vous d'autres fonctions de 'snprintf' et autres? – Blindy
D'ailleurs, pourquoi utilisez-vous snprintf dans un programme C++? – jalf
@jalf: Parce que c'est plus propre, plus lisible et beaucoup plus rapide que les flux C++? –