Avatar ·

C++ में घोषणा और परिभाषा में क्या अंतर है?

नमस्ते! मैंने हाल ही में C++ सीखना शुरू किया है और मैं लगातार 'declaration' और 'definition' शब्दों में भ्रमित हो जाता हूँ। ये समान लगते हैं, लेकिन compiler अलग-अलग चीज़ों पर त्रुटि देता है। यहाँ एक उदाहरण है जिसने मुझे भ्रमित किया। मैंने यह कोड लिखा: ```cpp #include int x; // यह declaration है या definition? extern int y; // और यह? void foo(); // और यह? int main() { std::cout << x; return 0; } void foo() { // कुछ implementation } ``` अगर मैं `void foo() { ... }` हटा दूँ और केवल `void foo();` छोड़ दूँ, तो compiler linker error देता है। लेकिन अगर मैं `extern` के बिना `int x;` लिखूँ, तो सब काम करता है। ऐसा क्यों? किन मामलों में `int x;` declaration है और किनमें definition? और ODR (One Definition Rule) क्या है? कृपया सरल शब्दों में, उदाहरणों के साथ समझाएँ ताकि मैं अब और भ्रमित न होऊँ।