Déclarations et définitions de fonction

La distinction entre une déclaration de fonction et une définition de fonction est similaire à celle d'une déclaration et d'une définition de données. La déclaration établit les noms et les caractéristiques d'une fonction mais n'y alloue pas de mémoire, tandis que la définition spécifie le corps d'une fonction, associe un identificateur à la fonction et lui alloue de la mémoire. Ainsi, les identificateurs déclarés dans cet exemple:
float square(float x);
n'allouez pas de mémoire.
La définition de fonction contient une déclaration de fonction et le corps d'une fonction. Le corps est un bloc d'instructions qui effectuent le travail de la fonction. Les identificateurs déclarés dans cet exemple allouent de la mémoire ; il s'agit à la fois de déclarations et de définitions.
float square(float x) 
{ return x*x; }
Une fonction peut être déclarée plusieurs fois dans un programme, mais toutes les déclarations d'une fonction donnée doivent être compatibles, c'est-à-dire que le type de retour est le même et que les paramètres ont le même type. Toutefois, une fonction ne peut avoir qu'une seule définition. Les déclarations sont généralement placées dans les fichiers d'en-tête, tandis que les définitions apparaissent dans les fichiers source.