« Le probème ici c'est que justement la bibliothèque standard du C n'est pas vraiment ce qu'on appelle un runtime au 21 siècle. Elle propose à peu près rien comme fonctions par rapport à ce que l'on attend maintenant d'un runtime. »
Ça franchement ce n'est pas grave, vu le nombre de bibliothèques externes de qualité qui ont été produites depuis. Ensuite, l'intérêt de la libC, c'est que le compilateur a le droit de considérer que toutes ses fonctions sont magiques. Par exemple, un bête code du genre : for (i=0;i<N;++i) dst[i] = src[i];
peut être remplacé légalement par le compilateur en memcpy(dst,src,N*sizeof(*dst));. Bref, les fonctions de la libc ne sont pas de simples fonctions, elles font partie de la norme et peuvent être manipulées de façon très bizarre par le compilateur s'il décide que ça en vaut la peine ...
Donc les fonctions de manipulation de chaîne n'y échappent pas, et si un compilateur assez futé [1] s'aperçoit qu'il peut simplifier du code de manip de chaîne fait avec les fonctions str*, il ne va pas se gêner pour le faire.
[1] Ce n'est pas toujours évident cependant, bien entendu. Et je ne suis pas certain que les compilos fassent grand chose en général.
[^] # Re: Humm...
Posté par lasher . En réponse à la dépêche Sortie de la version 2.11 de la bibliothèque standard C GNU (glibc). Évalué à 2.
Ça franchement ce n'est pas grave, vu le nombre de bibliothèques externes de qualité qui ont été produites depuis. Ensuite, l'intérêt de la libC, c'est que le compilateur a le droit de considérer que toutes ses fonctions sont magiques. Par exemple, un bête code du genre :
for (i=0;i<N;++i) dst[i] = src[i];peut être remplacé légalement par le compilateur en
memcpy(dst,src,N*sizeof(*dst));. Bref, les fonctions de la libc ne sont pas de simples fonctions, elles font partie de la norme et peuvent être manipulées de façon très bizarre par le compilateur s'il décide que ça en vaut la peine ...Donc les fonctions de manipulation de chaîne n'y échappent pas, et si un compilateur assez futé [1] s'aperçoit qu'il peut simplifier du code de manip de chaîne fait avec les fonctions str*, il ne va pas se gêner pour le faire.
[1] Ce n'est pas toujours évident cependant, bien entendu. Et je ne suis pas certain que les compilos fassent grand chose en général.