C++ में declaration और definition में क्या अंतर है?
सभी को नमस्ते! मैंने अभी C++ सीखना शुरू किया है और "declaration" और "definition" शब्दों में उलझ गया हूँ। दोनों ही variables और functions बनाने से संबंधित लगते हैं, लेकिन मुझे मूलभूत अंतर समझ नहीं आ रहा।
उदाहरण के लिए, मैं यह कोड लिखता हूँ:
```cpp
int x; // यह declaration है या definition?
extern int y; // और यह?
void foo(); // और यह?
void foo() { } // और यह?
```
जब मैं function के अंदर `int x;` लिखता हूँ, तो compiler एक variable बनाता है और उसके लिए memory आवंटित करता है। लेकिन जब मैं `extern int y;` लिखता हूँ, तो प्रोग्राम compile नहीं होता जब तक कि मैं कहीं और `int y;` न जोड़ूँ। ऐसा क्यों? इसके पीछे क्या तर्क है?
मैंने यह भी सुना है कि declaration को दोहराया जा सकता है, लेकिन definition को नहीं। लेकिन व्यवहार में, अगर मैं global scope में दो बार `int x;` लिखूँ, तो मुझे "multiple definition" error मिलता है। और अगर मैं दो बार `extern int x;` लिखूँ, तो यह काम करता है। कृपया सरल शब्दों में, उदाहरणों के साथ समझाएँ कि यह कैसे काम करता है। पहले से धन्यवाद!