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 :

Les namespace en C


Sujet :

C

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut Les namespace en C
    Salut,

    Voilà je suis plus habitué au C++ qui dispose d'espaces de définition. Il me semble que les moutures récentes du C permettent des "namespace".

    Mais je vois pas comment mettre en oeuvre cette commodité.

    par ex :
    dans le module A, il y a :
    int readstream();
    dans le module B, il y a :
    int readstream();

    Comment faire la distinction entre les deux fonctions ?

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    pas de namespace en C.

    donne des noms de fonctions differents a des fonctions ... differentes !

  3. #3
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    ou alors si elle sont dans des structures , tu pourra les appeler differament
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a.readstream();
    b.readstream();

  4. #4
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par nemo69500
    ou alors si elle sont dans des structures , tu pourra les appeler differament
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a.readstream();
    b.readstream();
    C'est du C++ que tu proposes là !!!

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par dj.motte
    Salut,

    Voilà je suis plus habitué au C++ qui dispose d'espaces de définition. Il me semble que les moutures récentes du C permettent des "namespace".

    Mais je vois pas comment mettre en oeuvre cette commodité.

    par ex :
    dans le module A, il y a :
    int readstream();
    dans le module B, il y a :
    int readstream();

    Comment faire la distinction entre les deux fonctions ?
    On met des prefixes: AReadStream, BReadStream.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par dj.motte
    Salut,

    Voilà je suis plus habitué au C++ qui dispose d'espaces de définition. Il me semble que les moutures récentes du C permettent des "namespace".

    Mais je vois pas comment mettre en oeuvre cette commodité.

    par ex :
    dans le module A, il y a :
    int readstream();
    dans le module B, il y a :
    int readstream();

    Comment faire la distinction entre les deux fonctions ?
    Le mieux est de préfixer le nom de la fonction avec le nom du module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int A_fonction(void);
    int B_fonction(void);
    Tu peux aussi procéder comme l'a proposé nemo69500, mais je ne vois pas le gain en lignes de codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int A_fonction(void);
    int B_fonction(void);
     
    struct Fonction_ns  {
        int (*fonction)(void);
    };
     
    const struct Fonction_ns A = {A_fonction};
    const struct Fonction_ns B = {B_fonction};
     
    /*...*/
    A.fonction();
    B.fonction();
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    Citation Envoyé par crocodilex
    C'est du C++ que tu proposes là !!!
    c est pas du c++, fo que tu te renseigne sur les structure , pas des class , je parle de structure et c est tout a fait du C

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par dj.motte
    Voilà je suis plus habitué au C++ qui dispose d'espaces de définition. Il me semble que les moutures récentes du C permettent des "namespace".
    Pas à ma connaissance. Tu as une référence ?
    Mais je vois pas comment mettre en oeuvre cette commodité.

    par ex :
    dans le module A, il y a :
    int readstream();
    dans le module B, il y a :
    int readstream();

    Comment faire la distinction entre les deux fonctions ?
    Saus avis contraire, à part static, je ne vois pas. Mais elles ne seront pas visibles de l'extérieur.

    Sinon, la pratique courante, c'est la gestion 'à-la-main' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int A_readstream();
    int B_readstream();
    Mais ce n'est pas un scoop...

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nemo69500
    c est pas du c++, fo que tu te renseigne sur les structure , pas des class , je parle de structure et c est tout a fait du C
    Tu veux dire que tu utilises des pointeurs de fonctions ? Ca complique pour pas grand chose. Le préfixage est la solution 'C'.

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Pas à ma connaissance. Tu as une référence ?
    J'avais pas releve. J'ai jamais rien vu, meme dans les propositions.

  11. #11
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Je confirme, les "methodes" dans les struct c'est qu'en C++ (meme si c'est pas des classes), ou alors tu as des structures avec des pointeurs de fonction initialisés à la bonne fonction

  12. #12
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par nemo69500
    c est pas du c++, fo que tu te renseigne sur les structure , pas des class , je parle de structure et c est tout a fait du C
    Alors dans ce cas, il faut que tu soit plus précis dans tes réponses.
    Quand tu dis, je cite :
    Citation Envoyé par nemo69500
    ou alors si elles sont dans des structures , tu pourra les appeler differament
    je suppose que "elles" c'est pour "les fonctions". Donc en effet, des fonctions dans une structure, cela ressemble à une classe.
    A moins que tu voulais parler de pointeur de fonction...

    Citation Envoyé par nemo69500
    [...]fo que tu te renseigne sur les structure[...]
    Merci pour ce tuyau, mais je pense m'être déjà renseigné sur les structures à l'époque où tu portais encore des couches culottes...

  13. #13
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    excuse moi

  14. #14
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    J'ai jamais rien vu, meme dans les propositions.
    Si, sur comp.std.c : Why not add namespace feature into standard C? Autres options

  15. #15
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je rajouterais, comme l'ont déjà indiqué mes estimés collègues ci-dessus, que je n'en vois pas l'intérêt, tout au plus pour fainénantiser un peu plus les programmeurs... Sans augmenter la lisibilité.

    En effet, ce qui est valable dans un langage objet, où on peut distinguer un nom par l'objet auquel il se rattache, n'a pratiquement aucun intérêt dans un langage non objet.

    Soit on a des fonctions privées, et on est libre des noms que l'on affecte. Soit on a des fonctions publiques, et un minimum de logique dans la conception implique de leur donner un nom clair (par exemple précédé de la fonctionalité, du module, du projet, etc..).

    L'avantage dans un langage non-objet de cette manière de procéder est qu'on peut avoir une politique de noms homogènes, décidée par la conception.... Et donc plus lisible.

    Et si on permettait en C quelque chose comme ça, cela deviendrait automatique, et donc( même sans parler des problèmes de compatibilié mentionnés dans le lien du post précédent), dé-responsabiliserait le programmeur sur le choix, et compliquerait inutilement la vie : soit une application (gros projet) comprenant 9000 fonctions externes, manipulant 500000 objets, classés en 150 différents types.... Euhhhhh.........

    Enfin, ceci est mon opinion et je la partage

  16. #16
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gege2061
    Je parlais des propositions formelles.

Discussions similaires

  1. [C#] Les namespaces
    Par Seth77 dans le forum C#
    Réponses: 1
    Dernier message: 23/10/2006, 09h30
  2. [DOM] Problème avec les namespaces
    Par clincks dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/06/2006, 20h40
  3. [VB.NET] Ou importer les namespaces com System.data.. ?
    Par beegees dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2006, 11h06
  4. [.Net] Probleme avec les namespace
    Par ksoft dans le forum MFC
    Réponses: 3
    Dernier message: 07/06/2006, 17h23
  5. Les namespace sont nos amis....
    Par oldfox dans le forum C++
    Réponses: 16
    Dernier message: 23/03/2006, 19h37

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