Avatar ·

Quelle est la différence entre déclaration et définition en C++ ?

Bonjour à tous ! Je viens de commencer à apprendre le C++ et je me suis embrouillé avec les termes "declaration" et "definition". Les deux semblent liés à la création de variables et de fonctions, mais je ne comprends pas la différence fondamentale. Par exemple, j'écris ce code : ```cpp int x; // Est-ce une declaration ou une definition ? extern int y; // Et ça ? void foo(); // Et ça ? void foo() { } // Et ça ? ``` Quand j'écris `int x;` à l'intérieur d'une fonction, le compilateur crée une variable et lui alloue de la mémoire. Mais quand j'écris `extern int y;`, le programme ne compile pas si je n'ajoute pas `int y;` ailleurs. Pourquoi ? Quelle est la logique ? J'ai aussi entendu qu'une declaration peut être répétée, mais pas une definition. En pratique, je reçois une erreur "multiple definition" si j'écris `int x;` deux fois dans la portée globale. Par contre, si j'écris `extern int x;` deux fois, ça fonctionne. Expliquez-moi, s'il vous plaît, comment cela fonctionne en termes simples, avec des exemples. Merci d'avance !