variables statiques en globale et mot-clé extern
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

variables statiques en globale et mot-clé extern



  1. #1
    pseudomehdi

    variables statiques en globale et mot-clé extern


    ------

    salut, il y'a une chose que je ne comprend pas :dans le cas où le programme comporte plusieurs fichier.c et dans le cas où je déclare en globale une variable dans un de ces fichiers, est ce que celle-ci sera visible dans les autre fichier ?? si oui à quoi sert alors le mot-clé extern si non à quoi sert alors le mot-clé static ? et merci d'avance

    -----
    Dernière modification par pseudomehdi ; 23/01/2018 à 17h19.

  2. #2
    pseudomehdi

    Re : variables statiques en globale et mot-clé extern

    d'après ce que j'ai compris, pour que la variable ne soit visible que dans le fichier.c où elle a été déclaré il faut la déclaré comme variable statique mais si pour qu'elle soit visible dans d'autre fichiers on a besoin de reporter la déclaration à ces autres fichiers avec le mot-clé extern ça veut dire qu'elle est par défaut visible uniquement dans le fichier où elle a été déclaré donc si elle est par défaut statique pourquoi la déclarer comme statique ?? je ne comprend rien
    Dernière modification par pseudomehdi ; 23/01/2018 à 19h05.

  3. #3
    PA5CAL

    Re : variables statiques en globale et mot-clé extern

    Bonsoir

    Tout d'abord, il convient distinguer la déclaration et la définition d'une variable. La définition d'une variable a pour effet de la créer, alors que sa déclaration indique seulement au programme qu'elle existe en précisant son type.

    Si l'on définit une variable globale dans un fichier fic1.c et qu'on l'utilise dans un fichier fic2.c, alors cette variable doit être déclarée dans fic2.c à l'aide du mot-clé extern de sorte que le compilateur connaisse son type et sache qu'elle existe ailleurs, et que son adresse ne sera pas connue par cette partie du programme avant l'édition de liens.


    Le mot-clé static a plusieurs fonctions en rapport avec la portée de la variable concernée. S'agissant d'une variable globale, il indique que sa portée est limitée au fichier en cours. Celle-ci ne sera pas visible depuis l'extérieur du fichier qui la contient, ce qui permet notamment d'avoir plusieurs variables portant le même nom dans des fichiers différents.

  4. #4
    pseudomehdi

    Re : variables statiques en globale et mot-clé extern

    merci pour ta réponse c'était claire en fait ce qui m'a embrouillé c'est qu'il y'a des gens qui utilisent le mot-clé static même quand ils n'utilisent pas deux variables du même nom.
    Images attachées Images attachées  

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : variables statiques en globale et mot-clé extern

    Citation Envoyé par pseudomehdi Voir le message
    merci pour ta réponse c'était claire en fait ce qui m'a embrouillé c'est qu'il y'a des gens qui utilisent le mot-clé static même quand ils n'utilisent pas deux variables du même nom.
    Tu ne peux pas savoir à l'avance si un autre fichier écrit pas une autre personne ne va pas utiliser de son côté le même nom de variable.

  7. #6
    pseudomehdi

    Re : variables statiques en globale et mot-clé extern

    ah d'accord c'est par précaution alors, merci.

Discussions similaires

  1. [Numérique] PIC18F46K40 Problème Variable Globale
    Par cresus54 dans le forum Électronique
    Réponses: 18
    Dernier message: 01/03/2017, 20h31
  2. PHP : Variable globale dans un Switch
    Par narqoarts dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 08/04/2016, 13h59
  3. python : variable globale dans des class
    Par docEmmettBrown dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 25/05/2015, 21h29
  4. PIC18F interuption et variable globale
    Par manuj dans le forum Électronique
    Réponses: 7
    Dernier message: 07/08/2012, 15h04
  5. matlab variable globale
    Par invitea255964f dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 04/06/2009, 07h37