Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C][C++] Librairies et fonctions de base

Où voir le détail des fonctions comme printf?

    21 mars 2008 à 17:11:51

    Bonjour à tous!

    Depuis quelques temps je m'intéresse plus en profondeur à la programmation, c'est à dire à ce qui se passe derrière. Je trouve que c'est essentiel pour comprendre ce que l'on fait et ainsi éviter des erreurs par exemple.

    Dernièrement je me demandais où est-ce que l'on pouvait trouver le détail des fonctions de base comme printf, scanf, et même d'autres comme celles pour la gestion des fichiers.

    Cependant (je travaille avec Code::Blocks) je n'ai pas de problèmes pour trouver les fichiers .h, mais il n'y a pas de fichiers .c ou .cpp comme lorsque l'on fait nous-même nos fonctions et que l'on utilise la programmation modulaire.
    Je suppose donc que ces fonctions doivent être écrites dans les fichiers .lib ou .a.

    C'est là que j'ai un doute et :
    _si c'est le cas, comment voir le contenu de ces fonctions?
    _sinon, où les trouver?

    Merci d'avance pour cette question!

    J'ai également une autre question qui m'amenait en fait à aller explorer <iostream>. Je sais utiliser la base des espaces de nom, mais je voudrais savoir s'il est possible de faire pareil avec les classes.
    Je m'explique :
    _pour accéder à une fonction ou variable d'un espace de nom, on écrit
    espacedenom::fonction()
    ou un truc dans le genre.
    _pour écrire les fonctions d'une classe en programmation modulaire, on le fait en dehors de la définition de la classe et on écrit un truc comme ça :
    classe::methode()

    Lorsque l'on fait
    using namespace espacedenom
    pour le premier cas on a plus qu'à faire
    fonction()
    pourvu qu'il n'y ait pas de conflit.

    Est-ce possible de le faire également pour la classe, et éviter alors de réécrire à chaque fois
    classe::

    Merci d'avance pour cette deuxième question!!!
    :D
    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2008 à 17:29:04

      1- GCC est la prime incarnation de la GPL, tu devrais pouvoir trouver les sources de ta libc quelque part. (C::B délégant le vrai boulot de compilation à GCC)

      2- Non. De toutes façons, cela n'aurait de sens que pour l'utilisation des fonctions statiques (de classe).
      Enfin, selon les contexte (autres fonctions de la classe), cela devient optionnel.
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        21 mars 2008 à 18:02:26

        Merci pour vos réponses, j'vais essayer de fouiller un peu, parce que c'est un peu le bordel là-dedans, et j'ai pas envie de tout traduire! o_O

        Heu... lmghs (drôle de nom quand même! c'est pas méchant :D ) Tu dis, pour mon histoire de classe,

        Citation : lmghs

        2- Non. De toutes façons, cela n'aurait de sens que pour l'utilisation des fonctions statiques (de classe).
        Enfin, selon les contexte (autres fonctions de la classe), cela devient optionnel.


        Si c'est optionnel, pour moi ça veut dire que c'est possible. Or tu dis que ça ne l'est pas! Comprends pas trop là...
        Pourquoi cela n'aurait-il pas de sens? Si dans le fichier classe.cpp on écrit les fonctions définies dans classe.h, pourquoi ne pas alléger la syntaxe et en écrire moins. En plus, un using namespace a une portée, ce serait donc actif que dans ce fichier qui est là que pour écrire les fonctions de ma classe.

        Enfin bon.
        Et c'est pas possible d'accéder au définitions des fonctions à partir des fichiers installés par Code::Blocks? (J'sais pas pourquoi je me doute de la réponse!)
        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2008 à 18:20:53

          Citation : Dj Kyk

          Heu... lmghs (drôle de nom quand même! c'est pas méchant :D )


          C'est toutes mes initiales, mais il va falloir que je change ça.


          Citation : Dj Kyk

          Tu dis, pour mon histoire de classe,
          Si c'est optionnel, pour moi ça veut dire que c'est possible. Or tu dis que ça ne l'est pas! Comprends pas trop là...
          Pourquoi cela n'aurait-il pas de sens? Si dans le fichier classe.cpp on écrit les fonctions définies dans classe.h, pourquoi ne pas alléger la syntaxe et en écrire moins. En plus, un using namespace a une portée, ce serait donc actif que dans ce fichier qui est là que pour écrire les fonctions de ma classe.


          OK. C'est potentiellement possible dans le contexte d'appel, et uniquement dans ce contexte. Et ce aux uniques conditions :
          a- d'appeler une fonction statique (de classe) depuis une autre fonction (statique ou non) de la même classe [1], ou
          b- une fonction membre non statique depuis une autre fonction membre (ni template, ni statique) de la même classe [1]

          [1] au détail des héritages.

          Pour les définitions comme tu cherches à faire, n'y pense même pas.

          Citation : Dj Kyk

          Et c'est pas possible d'accéder au définitions des fonctions à partir des fichiers installés par Code::Blocks? (J'sais pas pourquoi je me doute de la réponse!)


          Aucune idée. J'utilise vim et je me suis définis ce qu'il fallait pour pouvoir le faire. :)
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            21 mars 2008 à 18:26:37

            Ok merci.
            C'était juste par curiosité, mais franchement, c'est pas écrire un peu plus qui va m'embêter!

            Ce qui m'embête plus c'est qu'un projet qui marchait très bien avec l'ancienne version de Code::Blocks ne fonctinne plus avec la nouvelle et j'ai le gentil message :
            "It seems that the project has not been built yet."
            Grrr!!! Ca m'énerve j'ai que des problèmes depuis que je l'ai installée!
            • Partager sur Facebook
            • Partager sur Twitter

            [C][C++] Librairies et fonctions de base

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown