toujours confondue avec la déclaration et la définition en terme de C: si un fichier d'en-tête est comme:déclaration et définition
#ifndef _BASIC_H_
#define _BASIC_H_
void test();
extern int i; //define or declare
#endif
et deux fichiers sources f1.c et f2.c contiennent cet en-tête, puis une source fichier besoin de définir la variable "i".
mais si le fichier d'en-tête est comme:
#ifndef _BASIC_H_
#define _BASIC_H_
void test();
int i; //define or declare
#endif
et deux fichiers source f1.c et f2.c, contiennent cet en-tête sans définir la variable « i » dans un fichier, il va encore à travers quand J'utilise la variable.
mes questions est quand la variable est définie.
Merci
[Cela répond à la même question pour C++.] (Http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration/1410632#1410632) Il y a des différences entre C et C++, mais pour ce que vous demandez ils ne s'appliquent pas. – sbi
Notez que 'void test();' n'est pas la même chose que 'void test (void);'. Le second attrapera les erreurs où vous appelez 'test (foo);' au moment de la compilation. – nmichaels