Was ist der Unterschied zwischen Deklaration und Definition in C++?
Hallo! Ich habe vor kurzem angefangen, C++ zu lernen, und verwechsle ständig die Begriffe "Deklaration" (declaration) und "Definition" (definition). Sie klingen ähnlich, aber der Compiler meckert über verschiedene Dinge.
Hier ist ein Beispiel, das mich verwirrt hat. Ich habe diesen Code geschrieben:
```cpp
#include
int x; // Ist das eine Deklaration oder eine Definition?
extern int y; // Und das?
void foo(); // Und hier?
int main() {
std::cout << x;
return 0;
}
void foo() {
// irgendeine Implementierung
}
```
Wenn ich `void foo() { ... }` entferne und nur `void foo();` übrig lasse, gibt der Linker einen Fehler aus. Aber wenn ich `int x;` ohne `extern` schreibe, funktioniert alles. Warum ist das so? In welchen Fällen ist `int x;` eine Deklaration und in welchen eine Definition? Und was ist ODR (One Definition Rule)? Erklärt es mir bitte einfach, mit