Quelle est la différence entre déclaration et définition en C++?
Bonjour ! J'ai récemment commencé à apprendre le C++ et je confonds constamment les termes « déclaration » (declaration) et « définition » (definition). Cela semble similaire, mais le compilateur se plaint de choses différentes.
Voici un exemple qui m'a embrouillé. J'ai écrit ce code :
```cpp
#include
int x; // Est-ce une déclaration ou une définition ?
extern int y; // Et ça ?
void foo(); // Et ici ?
int main() {
std::cout << x;
return 0;
}
void foo() {
// une implémentation quelconque
}
```
Si j'enlève `void foo() { ... }` et que je laisse seulement `void foo();`, le compilateur génère une erreur de linkage. Mais si j'écris `int x;` sans `extern`, tout fonctionne. Pourquoi ? Dans quels cas `int x;` est-il une déclaration, et dans quels cas une définition ? Et qu'est-ce que l'ODR (One Definition Rule) ? Expliquez-moi, s'il vous plaît, simplement, avec des exemples, pour que je ne me trompe plus.
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Travailler avec les bases de données en C# : PostgreSQL et MongoDB sur .NET