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 :

definition d'une constante static


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Par défaut definition d'une constante static
    je voudrais savoir la syntaxe pour definir une constante static de type unsigned char dans une fonction. je le fais parce que je ne veux pas utiliser de variable globale

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Par défaut
    Hum,
    me semble un peu paradoxal...
    Une constante ne peut pas etre modife et ce trouve en ROM.
    Une static est une variable modifiable et ce trouve en RAM.
    Je pense que tu dois te tromper quelque part...
    Salutations

  3. #3
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    C'est exactement comme quand tu le dis, il faut préciser :
    - que son type est unsigned char
    - qu'elle est constante
    - qu'elle est statique

    Tu peux faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void mamethode()
    {
    	const static unsigned char uc = 7;
    }
    Note : il te faut l'initialiser dans la foulée, car elle est constante (et que tu ne pourras donc pas le faire plus tard)

    Citation Envoyé par emardjean
    Une static est une variable modifiable et ce trouve en RAM.
    Sauf quand elle est const.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Par défaut
    hum,
    Quel est l'interet ?
    Salutation

  5. #5
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    un des intérêts c'est que dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void mamethode()
    {
    	const static unsigned char uc = 7;
     
    	fait_quelque_chose_avec_ceci(uc);
    	fait_autre_chose_avec_ceci(uc);
    	va_ceuillir_des_noisettes(uc);
    	range_tes_oreilles(uc);
    	ne_touche_pas_au_chocolat(uc);
    }
    On génère le même exécutable que dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void mamethode()
    {
    	fait_quelque_chose_avec_ceci(7);
    	fait_autre_chose_avec_ceci(7);
    	va_ceuillir_des_noisettes(7);
    	range_tes_oreilles(7);
    	ne_touche_pas_au_chocolat(7);
    }
    Mais cela se modifie plus facilement.

    Bonne journée.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Par défaut
    Ok,
    En C++, on remplace les #define par des const static,
    désolé pour mes remarques désagreables

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Je mettrais un bémol, néanmoins. Définir la constante comme static n'apporte rien dans l'exemple.
    L'interêt d'une variable de fonction déclarée 'static' est que cela permet de préserver sa valeur entre les appels successifs de la fonction.
    Si cette dernière est constante, conserver sa valeur est sans objet.

    Bien sûr 'static' n'a pas le même sens lors d'une déclaration de variable en dehors d'une fonction.

    Pour ce qui est d'écrire la valeur des constantes dans la ROM. J'espère que c'est un abus de langage...

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Par défaut
    Bonjour,

    Nul ne doute de l'intérêt de déclarer des constantes plutôt que de coder des valeurs en clair, comme tu l'as bien noté.

    Par contre, j'aimerais savoir pourquoi tu tiens à ce qu'elle soit static : ça n'amène absolument rien de plus à son utilisation.

    Et globalement, constante ou variable, le tout est en RAM. Qui vous a mis en tête qu'une constante était en ROM ?
    Désolé, mais ce sigle fait référence à un type de mémoire physique, pas au fait qu'un élément d'un programme n'est pas modifiable.
    De plus, pour certains compilateurs (tous ?), une constante n'est même pas en mémoire à un endroit précis, elle est codée en dur dans l'exécutable.

Discussions similaires

  1. [Debutant]Definition d'une constante.
    Par GETah dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2005, 19h16
  2. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  3. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36
  4. ajout d'une constante dans un select
    Par Shabata dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 18h24
  5. Partage d'une constante entre 2 fichiers en C
    Par elsargento dans le forum C
    Réponses: 6
    Dernier message: 29/09/2003, 22h17

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