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 :

constante de caractère &co.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de corwin
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 85
    Par défaut constante de caractère &co.
    Bonjour,

    voila j ai un problème qui va surrement paraitre très simple.
    Je suis entrain de créer un plugin a un petit soft en C. Celui a de nombreuse fonctionnalité qui fonctionne très bien notamment des fonctions qui prenne en paramètre des variables de type "gchar *" et qui en renvoie.
    Dans mon bout de code j aimerais comparer la sortie de certaine fonction avec
    un ensemble de chaine de caractère bien définie par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    gchar *var;
    var = fonctionTOTO();
    if(strcmp(var,ma_chaine){
    ...
    avec ma_chaine qui devrait contenir admettont "titi"
    j ai une dizaine de chaine du style ma_chaine a declarer..
    Quel est la meilleur solution ??
    j ai commencé a faire du :
    define ma_chaine = "titi";
    dans mon header principal...
    ou alors a faire une declaration du style gchar *ma_chaine = "titi" mais comme le header est inclu partout je me retouve avec des erreur du style multiple declaration...

    que me suggérez vous ?

    merci d avance.

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683

  3. #3
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par corwin
    Bonjour,

    voila j ai un problème qui va surrement paraitre très simple.
    Je suis entrain de créer un plugin a un petit soft en C. Celui a de nombreuse fonctionnalité qui fonctionne très bien notamment des fonctions qui prenne en paramètre des variables de type "gchar *" et qui en renvoie.
    Dans mon bout de code j aimerais comparer la sortie de certaine fonction avec
    un ensemble de chaine de caractère bien définie par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    gchar *var;
    var = fonctionTOTO();
    if(strcmp(var,ma_chaine){
    ...
    avec ma_chaine qui devrait contenir admettont "titi"
    j ai une dizaine de chaine du style ma_chaine a declarer..
    Quel est la meilleur solution ??
    j ai commencé a faire du :
    define ma_chaine = "titi";
    dans mon header principal...
    ou alors a faire une declaration du style gchar *ma_chaine = "titi" mais comme le header est inclu partout je me retouve avec des erreur du style multiple declaration...

    que me suggérez vous ?

    merci d avance.
    Est-ce que les chaines 'ma_chaine' ont besoin forcément d'apparaître dans le .h ?

    Si non, dans le .c qui les utilise en variables privées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static char const * titi = "titi";
    static char const * toto = "toto";
    static char const * tata = "tata";
    ...
    Si ces chaines de caractères ont effectivement besoin d'être visibles dans plusieurs sources et sont publiques, il faudra les déclarer en tant que variables globales avec extern dans le .h et créer un fichier .c dans lequel elles seront définies.

    A+

  4. #4
    Membre confirmé Avatar de corwin
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 85
    Par défaut
    Effectivement ma_chaine doit etre visible de plusieur fichier donc doit etre declarer dans le .h
    sinon merci pour vos info juste un mot en plus que pensez vous d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define ma_chaine "titi"
    C est pas plus simple ? c est a éviter ? si c est pas bon pourquoi ?

    merci.

  5. #5
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par corwin
    Effectivement ma_chaine doit etre visible de plusieur fichier donc doit etre declarer dans le .h
    tu peux utiliser des globales avec extern :

    Exple,

    strimport.h
    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
     
    #ifndef STRIMPORT_H_INCLUDED
    #define STRIMPORT_H_INCLUDED
     
    #ifdef __cplusplus
    extern "C" {
    #endif /* __cplusplus */
     
    extern char const * label1;
    extern char const * label2;
    extern char const * label3;
     
    #ifdef __cplusplus
    }
    #endif /* __cplusplus */
     
    #endif /*STRIMPORT_H_INCLUDED */
    strimport.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include "strimport.h"
     
    char const * label1 = "Une bonne Guinness.";
    char const * label2 = "La Leffe n'est pas degueu non plus." ;
    char const * label3 = "Une petite Carlsberg ne serait pas pour me deplaire.";
    Tu peux inclure strimport.h dans plusieurs sources sans souci.

    Citation Envoyé par corwin
    sinon merci pour vos info juste un mot en plus que pensez vous d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #define ma_chaine "titi"
    C est pas plus simple ? c est a éviter ? si c est pas bon pourquoi ?

    merci.
    C'est aussi une bonne solution.

    A+

  6. #6
    Membre confirmé Avatar de corwin
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 85
    Par défaut
    merci a tous pour toutes vos infos

  7. #7
    Membre expérimenté Avatar de Pikwik
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 237
    Par défaut
    Juste une petite suggestion :
    Pourquoi ne pas utiliser un tableau de chaines ? Comme ca tes test serons plus facile à maintenir, tu utiliseras une boucle for par exemple, et si tu dois suprimer ou ajouter un élément a test test, tu auras juste à modifier le .h

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Définition d'une constante de caractère vide
    Par Jimalexp dans le forum Général Java
    Réponses: 26
    Dernier message: 16/01/2009, 22h16
  2. Afficher un compteur avec nb de caractères constants
    Par aliassaf dans le forum Général Python
    Réponses: 2
    Dernier message: 22/06/2006, 18h38
  3. Réponses: 4
    Dernier message: 14/12/2005, 17h25

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