IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

code source d'une fonction prédéfinie


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut code source d'une fonction prédéfinie
    Bonjour,
    Je cherche l'instruction qui permet d'afficher le code source d'une fonction prédéfinie en c.
    merci d'avance !

  2. #2
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    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

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    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.

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    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;
    }

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    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.

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    comment le faire s'il vous plait ?

  7. #7
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Citation Envoyé par bambitous Voir le message
    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
    size_t strlen (char *str) {
    size_t len = 0;
    while (*str != '\0') {
    str++;
    len++
    }
    return len;
    }
    À 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

  8. #8
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    merci beaucoup !
    j'ai trouvé par exemple string.c

  9. #9
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    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 :
    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;
    }
    la gnu libc propose :
    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.

Discussions similaires

  1. code source d'une fonction
    Par kchiheb dans le forum MATLAB
    Réponses: 0
    Dernier message: 17/09/2008, 23h38
  2. [FLASH MX2004 PRO] Recuperer le code source d'une page
    Par adilou1981 dans le forum Flash
    Réponses: 9
    Dernier message: 26/07/2005, 18h11
  3. [Reseau] Récupérer le code source d'une URL
    Par gogolpexe dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 29/06/2005, 14h06
  4. Récupérer le code source d'une page web
    Par glRaZ dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/12/2004, 09h16
  5. [Juridique] Comment réutiliser le code source d'une classe ?
    Par mathieu dans le forum Général Java
    Réponses: 8
    Dernier message: 17/05/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo