Bonjour,
Je cherche l'instruction qui permet d'afficher le code source d'une fonction prédéfinie en c.
merci d'avance !
Bonjour,
Je cherche l'instruction qui permet d'afficher le code source d'une fonction prédéfinie en c.
merci d'avance !
Bonjour,
Ta demande paraît un peu étrange ; il n'existe pas d'instructions câblée au niveau de ton processeur (ni de fonction dans la bibliothèque standard de C, d'ailleurs) permettant d'afficher le code source d'une fonction donnée. À mon avis, il va falloir que tu précises mieux ce que tu entends pas « fonction prédéfinie » et par « obtenir le code source ». Sous quel format souhaites-tu manipuler la donnée, par exemple ?
Bonne journée.
Récursivité en C : épidémie ou hérésie ?
"Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman
Bonjour,
Si tu veux afficher l'header, il te suffit de faire une recherche dans le dossier /usr/include/ ( fait un whereis pthread.h si ce n'est pas le bon dossier), d'ouvrir le fichier puis d'afficher son contenu.
Si tu veux afficher le code exécutable, je ne pense pas que ce soit possible vu que tu n'as pas les sources sur ton ordinateur mais la version compilée il me semble.
je pense qu'on appelle ça implémentation
c'est la commande qui me permet d'afficher comment une fonction est programmé
pour strlen j'aurais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 size_t strlen (char *str) { size_t len = 0; while (*str != '\0') { str++; len++ } return len; }
Il n'existe pas de telle commande.
Le seul moyen de récupérer l'implémentation est d'aller sur internet récupérer les sources.
comment le faire s'il vous plait ?
À part en trichant (p.ex., en gardant dans ton projet un répertoire contenant les sources de la bibliothèque standard de C), on ne peut pas faire ça simplement. Déjà, les fichiers sources de la bibliothèque standard qui sont liés à tes fichiers objets sont déjà compilés, leur code source en C n'est plus disponible. La façon la plus simple de faire cela est de procéder manuellement, en parcourant le code source sur internet (regarde les dépôts associés à la bibliothèque standard que tu utilises).
Récursivité en C : épidémie ou hérésie ?
"Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman
merci beaucoup !
j'ai trouvé par exemple string.c
Bonjour,
ton lien donne une (parmi d'autres possibles) implémentation de certaines fonctions. L'avantage avec ton lien est que cette implémentation reste simple et realtivement lisible.
Sinon si tu utilises la libc par défaut sous linux (implémentation GNU) tu as toutes les sources dispos dans le repo git . Comme cette implémentation se veut ultra portable elle est moins lisible pour un débutant.
Par exemple pour strcpy ton lien donne :
la gnu libc propose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char *strcpy(char *dst, const char *src) { char *cp = dst; while (*cp++ = *src++); return dst; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /* Copy SRC to DEST. */ char * strcpy (dest, src) char *dest; const char *src; { char c; char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src); const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1; size_t n; do { c = *s++; s[off] = c; } while (c != '\0'); n = s - src; (void) CHECK_BOUNDS_HIGH (src + n); (void) CHECK_BOUNDS_HIGH (dest + n); return dest; }
Certains langages (souvent interprétés) proposent des mécanismes d'introspection mais ce n'est pas le cas de C.
Tu peux éventuellement retrouver «le code source» dans le code objet (et l'exécutable) si tu as pris soin de compiler avec l'option debug, mais ce n'est absolument pas prévu pour ça.
Partager