Compilation de plusieurs fichiers C dans un programme
J'ai les deux fichiers suivants:
fichier1.c
int main(){
foo();
return 0;
}
fichier2.c
void foo(){
}
Puis-je compiler et lier les deux fichiers ensemble afin que la file1.c
reconnaîtra le foo
fonction sans ajouter extern
?
Mis à jour le prototype.
gcc fichier1.c fichier2.c lancers: avertissement: déclaration implicite de la fonction foo.
source d'informationauteur mary
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'un
extern
mais fichier1.c doit voir une déclaration quifoo()
existe. Habituellement, cette déclaration est un fichier d'en-tête.Pour ajouter une déclaration sans l'aide d'un fichier d'en-tête, il suffit de modifier le fichier fichier1.c:
La manière correcte est comme suit:
file1.c
file2.h
file2.c
output
Vous peutmais vous ne devriez pas.
Utiliser un fichier d'en-tête, fichier2.h:
Puis ajouter:
dans fichier1.c
De compilation:
En règle générale, il est préférable (plus robuste) pour utiliser un fichier d'en-tête pour définir la interface de chaque module plutôt que ad hoc prototypes dans les modules dépendants. C'est parfois connu comme l'ENDROIT (Point Unique De la Vérité) principe.
C'est moche, mais en utilisant gcc, vous pouvez:
-include
est un indicateur pour le préprocesseur qui reprendra le contenu de fichier2.c est tout en haut de fichier1.c. Cela dit, c'est un mauvais choix, et se décompose pour tous, mais le plus simple des programmes.