Que signifie le mot clé extern
? J'ai vu ça devant une déclaration de fonction comme
extern void DoFoo ...
extern
donne un nom lien externe. Cela signifie que l'objet ou la fonction est accessible via ce nom à partir d'autres unités de traduction du programme. Pour les fonctions, c'est le lien par défaut dans tous les cas, donc son utilisation (dans ce contexte) est généralement redondante.
Le mot-clé extern déclare une variable ou une fonction et spécifie qu'il a un lien externe (son nom est visible à partir de fichiers autres que celui dans lequel il est défini). Lors de la modification d'une variable, extern spécifie que la variable a une durée statique (elle est allouée au début du programme et désallouée à la fin du programme). La variable ou la fonction peut être définie dans un autre fichier source ou ultérieurement dans le même fichier. Les déclarations de variables et de fonctions au niveau du fichier sont externes par défaut.
Vous pouvez trouver un description plus complète ici .
Pour les débutants,
Au début, j'ai été confus d'apprendre que " le mot clé extern déclare une variable ou une fonction et spécifie qu'il a un lien externe " par @Romain Hippeau.
Maintenant, j'ai compris que nous pourrons partager nos variables avec d'autres classes via un mot clé externe.
Par exemple: Notification.h
#import <Foundation/Foundation.h>
extern const NSString* notificationConstant;
Notification.m
#import "Notification.h"
const NSString* notificationConstant = @"NotificationConstant";
En important notification.h dans n'importe laquelle de mes autres classes, je peux lire la valeur de la chaîne NotificationConstant.
Sans mot-clé externe, la constante de notification crée l'erreur suivante.