Sujet : Re: Déclaration extern
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.cDate : 17. Dec 2023, 22:57:53
Autres entêtes
Organisation : There's no cabale
Message-ID : <ulnncj$22kl$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Bonjour,
Le 17/12/2023 17:12, Thomas Nemeth a écrit :
Récemment je suis tombé sur une remarque d'un collègue à propos
du mot-clé "extern". Il me soutenait qu'il faut le mettre sur
les déclarations de fonctions exportées dans les headers. ie:
Fichier .c :
int toto(void)
{
return 0;
}
Fichier .h :
extern int toto(void);
Je n'ai malheureusement pas de pointeur vers une doc officielle à te donner,
alors si c'est ça que tu cherches je suis désolé de ne pas pouvoir t'aider.
Je peux malgré tout donner mon avis, basé à la fois sur la logique et sur ma
propre pratique du langage C.
Le mot-clé extern est utile pour une variable, car selon qu'on la déclare ou
non extern le compilateur saura s'il doit réserver de la mémoire (sans extern)
ou s'il sait que la mémoire sera réservée ailleurs et que ce sera résolu par
l'éditeur de lien (avec extern).
Mais dans le cas d'une fonction, vu que la déclaration dans un .h ne peut pas
réserver de la mémoire pour du code qui n'est pas défini dans ce même .h,
le mot-clé extern est optionnel car implicite.
En résumé : tu fais bien comme tu veux. Soit tu mets ce mot-clé extern par
souci esthétique, pour faire avec les fonctions comme avec les variables,
soit tu ne le mets pas parce qu'il ne sert à rien.
-- Olivier Miakinen