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 :

Mot-clef extern


Sujet :

C++

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Mot-clef extern
    Bonjour,

    Je code en C++ depuis maintenant quelques temps.
    Je travaille aujourd'hui sur un nouveau projet, et en me plongeant dans le code existant, je suis tombée sur la syntaxe suivante :

    fichier.hpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    extern int nomFonction1(type1 variable1, type2 variable2);
    extern int nomFonction2(type1 variable1, type2 variable2);
    extern int nomFonction3(type1 variable1, type2 variable2);
    Ces fonctions sont définies dans le .cpp.

    Je n'avais jamais utilisé l'attribut extern, quel est l'intérêt de déclarer une fonction externe ? Qu'est-ce que cela change au niveau de la portée des fonctions ?

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 196
    Points : 17 165
    Points
    17 165
    Par défaut
    En fait, aucun.
    Toute déclaration de fonction dans un namespace (fut-il global) est externe.

    extern signifie que le symbole (ici, une fonction) sera connectée via l'édition de lien.
    Autrement dit, elle pourra être définie dans une autre unité de compilation.

    J'ai tout récemment fait un message à ce sujet dans cette autre discussion

    Pour avoir plus de détails, regarde ce que dit cppreference sur storage duration and linkage

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Ah d'accord.

    Merci pour ton explication et le lien, je comprends mieux.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 196
    Points : 17 165
    Points
    17 165
    Par défaut
    Du coup, en pratique extern n'est nécessaire que pour déclarer des variables globales, ce qu'il faut éviter à tout prix.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 681
    Points : 10 698
    Points
    10 698
    Par défaut
    Il ne faut pas non plus oublier extern "C" qui permet de supprimer "la décoration des noms" (name mangling)

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 196
    Points : 17 165
    Points
    17 165
    Par défaut
    Ah oui, tiens, c'est vrai.
    Mais moi, si, je l'ai oublié

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

Discussions similaires

  1. le mot clef extern ?
    Par ikuzar dans le forum Débuter
    Réponses: 4
    Dernier message: 30/07/2009, 15h50
  2. Passage de C++ à Java (mot clef extern)
    Par grodwar dans le forum Langage
    Réponses: 5
    Dernier message: 05/05/2007, 14h06
  3. clefs externe sous access
    Par mahboub dans le forum Access
    Réponses: 2
    Dernier message: 24/10/2005, 23h00
  4. mot clef sql pour nom de champ
    Par bobinou007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 14h21

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