Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
fonctions [2016/06/22 14:31] krazyxx Lien chapitre suivant/précédent & correction orthographique |
fonctions [2016/06/28 16:27] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 137: | Ligne 137: | ||
<code> | <code> | ||
void f(int); // déclaration | void f(int); // déclaration | ||
- | void f() { ... } // définition | + | void f(int) { ... } // définition |
</code> | </code> | ||
Ligne 143: | Ligne 143: | ||
Une même fonction peut avoir plusieurs déclarations, mais ne peut avoir qu'une seule définition (ODR, //One Definition Rule//). | Une même fonction peut avoir plusieurs déclarations, mais ne peut avoir qu'une seule définition (ODR, //One Definition Rule//). | ||
+ | |||
+ | A noter la similarite entre la syntaxe pour declarer une fonction et l'initialisation d'une variable avec des parentheses : | ||
+ | |||
+ | <code cpp> | ||
+ | int x(int); // un type = declaration d'une fonction | ||
+ | int y(123); // une valeur = definition d'une variable | ||
+ | int z(); // rien = fonction ou variable ? | ||
+ | </code> | ||
+ | |||
+ | La derniere syntaxe correspond en fait a la declaration d'une fonction, qui ne prend aucun parametre et retourne un entier. Le probleme est que cette syntaxe est regulierement confondue avec une initialisation par defaut d'une variable. Ce qui produira bien sur une erreur de compilation lorsque vous esserez d'utiliser une fonction comme si c'etait une variable. | ||
</note> | </note> | ||