Comment faire pour déplacer les fonctions C en fichier séparé?

Je suis arriver a commencé avec la programmation en C. J'ai actuellement un gros fichier qui contient beaucoup de fonctions. Je voudrais déplacer ces fonctions à un fichier séparé, de sorte que le code est plus facile à lire. Cependant, je n'arrive pas à comprendre comment inclure/compiler et ne peut pas trouver un exemple dans l'un des tutoriels en ligne que j'ai trouvé. Voici un exemple simplifié:

#include <stdlib.h>
#include <stdio.h>

void func1(void) {
  printf("Function 1!\n");
}

void func2(void) {
  printf("Function 2!\n");
}

int main(void) {
  func1();
  func2();
  return 0;
}

Comment déplacer les fonctions C dans un fichier séparé? Pour info: je suis en utilisant gcc.

Mise à jour: Ces réponses sont très utiles, merci. Maintenant, il semble que mon exemple simplifié n'est pas assez bon parce que j'ai compris la raison de mon programme réussi à compiler est parce que je suis en utilisant une variable globale dans mes fonctions.

#include <stdlib.h>
#include <stdio.h>

int counter = 0;

void func1(void) {
  printf("Function 1!\n");
  counter++;
}

int main(void) {
  func1();
  return 0;
}

Déplacement de ces fonctions dans un fichier externe ne fonctionne pas parce qu'ils ont besoin de faire référence à cette variable globale:

#include <stdlib.h>
#include <stdio.h>
#include "functions.c"

int counter = 0;

int main(void) {
  func1();
  counter = 100;
  return 0;
}

Comment puis-je résoudre ce problème?

Simplement copier-coller de la définition d'une fonction dans un autre fichier, puis créer un en-tête avec les déclarations de fonction. Vous aurez besoin d'inclure cet en-tête dans votre fichier qui utilise main(). Vous aurez maintenant besoin pour compiler et lier chaque fichier source, en écrivant quelque chose comme gcc -o program main.c functions.c.
Voir: Ce qui est une bonne référence de documenter les modes d'utilisation de .h fichiers en C? et dois-je utiliser #include dans les en-têtes? pour des informations connexes.
Merci @JonathanLeffler
Je suppose que je dois aussi le point de ce que l'on appelait Quelles sont extern les variables en C?, qui est axée principalement sur des variables plutôt que des fonctions, mais il contient également un peu (beaucoup) de l'information, beaucoup de utile.

OriginalL'auteur Andrew | 2013-11-01