le code source de c/c++ fonctions
Je voulais avoir un coup d'oeil à la mise en œuvre des différents C/C++ fonctions (comme strcpy, stcmp, strstr). Cela va m'aider à connaître les bonnes pratiques de codage en c/c++. Pourriez-vous me faire savoir où je peux le trouver?
Grâce.
Est-il possible d'obtenir le code source de la bibliothèque standard c?
Chaque compilateur C utilise son propre code source de la bibliothèque standard C. De même, chaque compilateur C++ utilise son propre code source pour le C standard et des bibliothèques C++ (C++ comprend C donc un compilateur a besoin à la fois des bibliothèques). Cependant, il est également possible que la fonction strcpy() est directement mis en œuvre par le compilateur; il pourrait tout simplement émettre le bon code à la place au lieu de créer un appel de fonction.
Donc, pour obtenir un particulier de la bibliothèque de la mise en œuvre, il faut savoir si les personnes qui ont écrit le compilateur d'intérêt à disposition du code source?
Chaque compilateur C utilise son propre code source de la bibliothèque standard C. De même, chaque compilateur C++ utilise son propre code source pour le C standard et des bibliothèques C++ (C++ comprend C donc un compilateur a besoin à la fois des bibliothèques). Cependant, il est également possible que la fonction strcpy() est directement mis en œuvre par le compilateur; il pourrait tout simplement émettre le bon code à la place au lieu de créer un appel de fonction.
Donc, pour obtenir un particulier de la bibliothèque de la mise en œuvre, il faut savoir si les personnes qui ont écrit le compilateur d'intérêt à disposition du code source?
OriginalL'auteur | 2009-07-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier une copie de la glibc, qui va avoir le code source pour toutes les fonctions C dans la bibliothèque C standard. Ça devrait être un bon point de départ.
J'ai cliqué sur le lien et entra à l'intérieur des sources et vérifiées http://ftp.gnu.org/gnu/glibc . Il n'y a pas de mathématiques.h en tout .tar.gz les fichiers. Je veux juste regarder sqrt(). Ne pas écrire une fonction optimisée. Juste à regarder comment C fait
OriginalL'auteur mipadi
Il est intéressant de souligner que le code source de la bibliothèque C standard ne permet pas nécessairement de mettre en évidence les bonnes pratiques de codage. Comme la bibliothèque standard, il dispose d'un statut spécial où, par exemple, il peut s'appuyer sur un grand nombre de non précisé ou non-portable comportement simplement parce qu'ils savent exactement compilateur avec lequel il est utilisé.
Et bien sûr, cela ne vous dit au sujet de C pratiques de codage.
Qui n'a rien à voir avec le C++ pratiques de codage, qui sont très différents. Ne pas les traiter comme une seule langue. Il n'y a pas une telle chose comme C/C++. C est une langue avec ses propres pratiques de codage et des expressions communes, et le C++ est un distinct, indépendant de la langue qui a aussi ses propres pratiques et les expressions idiomatiques.
Bon C code est rarement bon de code C++.
strcpy
et d'autres fonctions de la bibliothèque C sont certainement pas bon du code C++.Désolé si c'était moralisateur, mais je pester à chaque fois que je démarre mon PC et il prend plus de temps que pour un système que j'avais il y a 20 ans. Les gens prennent le "peu d'efficacité" argument à un niveau de folie sur les systèmes modernes. L'ensemble "netbook" et l'ordinateur de poche de marché me donne le vertige quand j'entends les gens se plaindre "ce n'est pas assez puissant" pour certaines applications. Maintenant que vous avez effectivement à PENSER, n'est pas qu'une salope!
Je suis complètement d'accord, mais venant de l'autre sens. J'écris des applications scientifiques fait pour courir sur les clusters avec+ de 1000 cœurs. À cette échelle, ces petits inefficacités vraiment ajouter jusqu'à. En 18 mois, quand nous recevons un nouveau système avec deux fois plus de problème, nos problèmes ont au moins doublé de volume. Le matériel ne va jamais à rattraper ce que nous voulons faire.
Je suis d'accord qu'on ne devrait jamais écrire inefficace code, en parlant de la réelle algorithmique des constructions elles-mêmes. Ce que je ne suis pas d'accord avec les gens qui sont toujours bashing code managé pour être lent. Personnellement, je pense que l'écriture propre, petit, organisé, et surtout "portable" de code est le plus important dans la plupart des cas que l'efficacité. Le matériel d'obtenir plus rapidement à l'avenir et le code de bonne pourront être réutilisés; de merde, sale, du code non portable va devenir obsolète, et nous allons avoir à réinventer la roue .
Je ne pense pas que quiconque a même mentionné le code managé. Dans la plupart des cas, il n'y a également pas de contradiction entre les nettoyer/portable et efficace de code. Et les gens pensent que l'algorithmique efficacité les questions sont juste à côté de l'essentiel.
OriginalL'auteur jalf
Beaucoup de C standard fonctions de bibliothèque de code source listes & les discussions en Le Langage de Programmation C par Kernighan &Ritchie. Les discussions sont un bon moyen d'en apprendre plus sur les spécificités du langage C & la façon dont les fonctions de la bibliothèque standard, travail sous le capot.
K&R devrait être une lecture obligatoire pour quiconque de programmation en C. Très peu ont écrit quelque chose de si bien en si peu de pages.
C'est une meilleure suggestion que de regarder les bibliothèques réelles. Elles ont été écrites dans le but de l'enseignement de la C, plutôt que l'objectif d'avoir le plus efficace C de la bibliothèque.
OriginalL'auteur Pete
La plupart des compilateurs fournir le code source de la bibliothèque, - cependant que le code source est généralement un peu plus complexe et alambiqué que vous pourriez vous attendre.
Une bonne ressource pour ce qui est P. J. Plauger du livre, "La Bibliothèque Standard C", qui peut être assez cher si vous allez pour un employé. Le code présenté est pas toujours simple, mais Plauger l'explique très bien (et en donne les raisons pour lesquelles il ne peut pas toujours être franc et toujours suivre la norme).
Wow - on dirait utilisé les copies ne sont plus bon marché. Environ 45 $étant le bas de gamme. Je me demande pourquoi?
Grâce à vous, mon ami 🙂
Les explications du livre sont vraiment intéressantes pour la compréhension de la bibliothèque. Cependant, il a été écrit au début des années 90, de sorte qu'il est pour le C90 la norme plutôt que l'C99 (sans parler de la C11, qui a été, mais un élément de travail dans la norme du comité de la file d'attente lorsque cette réponse a été écrit). Néanmoins, il est beaucoup plus facilement compréhensible que le code de la bibliothèque C de GNU code est.
OriginalL'auteur Michael Burr
Oeil à une mise en œuvre de la libc bibliothèque standard C. Pour voir comment un vrai, populaire de la bibliothèque C est mis en œuvre, essayez de regarder le code de la glibc. Vous pouvez accéder au code à l'aide de git:
git clone git://sourceware.org/git/glibc.git
Comme pour C++, vous pouvez trouver la glibc++ standard library sur l'un de ces miroirs:
http://gcc.gnu.org/mirrors.html
Vous pouvez aussi consulter les uLibc, qui sera probablement plus simple que la GNU library:
http://git.uclibc.org/uClibc/tree/
Pour vous donner une idée, voici la strncpy mise en œuvre de uLibc:
Ici est strcmp et strstr
OriginalL'auteur IRBMe
bibliothèque standard c
OriginalL'auteur Tim Hoolihan
"La Standarc de la Bibliothèque C" est une spécification. Vous souhaitez avoir les sources pour une implémentation de la spécification. Votre compilateur C peut être ou ne pas fournir de telles sources - qui n'est GCC.
OriginalL'auteur
Vous pouvez également avoir un look à la Sources d'OpenBSD. Plus précisément, vous voulez la chaîne de sous-répertoire de la libc.
OriginalL'auteur Michael van der Westhuizen
Y a environ 10 ans, j'ai lu La Bibliothèque Standard C par Plauger. Recommande vivement.
OriginalL'auteur Sinan Ünür
Voici
La mise en œuvre varient quelque peu d'un système à un, mais GNU/Linux la mise en œuvre est probablement va être le plus facile à trouver là-bas.
OriginalL'auteur Eric Petroelje
Voici le général strXXX fonctions C dans NetBSD : http://cvsweb.netbsd.org/bsdweb.cgi/src/common/lib/libc/string/
Voici le NetBSD strXXX mise en œuvre pour les processeurs de type i386
http://cvsweb.netbsd.org/bsdweb.cgi/src/common/lib/libc/arch/i386/string/
OriginalL'auteur nos
Si vous utilisez Visual Studio Professionnel ou d'une Équipe, vous devriez être capable de trouver la source ici:
C:\Program Files\Microsoft Visual Studio 9.0\VC\crt\src
OriginalL'auteur Otávio Décio
À vos fins, ce livre peut être utile: Mastering Algorithmes avec C
OriginalL'auteur Frank V
En général, je trouve le BSD libc beaucoup plus facile à lire que celui du projet GNU. Il y a de moins en moins "gcc-ismes", le noyau est beaucoup plus claire dans l'intention, etc... Par exemple, le Code BSD pour malloc est tout à fait lisible par rapport à la glibc
OriginalL'auteur David Cournapeau