C'est un preprocessor macro.
Si FILE1_G_
est défini, toutes les occurrences de vextern
sont remplacées par extern
. Sinon, ils sont enlevés (remplacés par rien)
Modifier pour CLARIFIER en fonction des commentaires ci-dessous:
Cela signifie qu'il est soit déclaré comme extern
ou non; seul le mot vextern
est affecté. En ce qui concerne le cas d'utilisation ... il permet à un fichier .c
de définir les éléments "marqués" par vextern
en définissant FILE1_G_
avant d'inclure cet en-tête.
La valeur par défaut (FILE1_G_
n'a pas été défini) signifie que le fichier .c
qui est actuellement compris file1.h
n'a pas défini FILE1_G_
et ne définit pas les choses qui ont été marqués avec vextern
, mais il peut les utiliser parce qu'ils ont été déclarés dans cet en-tête et défini ailleurs.
Je ne sais pas lequel est correct. L'autre réponse suggère que seul le mot vextern sera affecté. Donc, cela voudrait dire que int serait toujours défini? – SSS
Il ne sera pas défini. Ce sera déclaré. (Lorsque vous écrivez un programme avec certains fichiers, vous ne devez définir une seule fois qu'une seule variable, mais vous devez la déclarer dans tous les fichiers qui l'utilisent.) – asaelr