परिवर्तनीय नामों को बिल्कुल भी संग्रहीत करने की आवश्यकता नहीं है! कंपाइलर पूरी तरह से छुटकारा पा सकता है। कल्पना कीजिए, अगर संकलक काफी चालाक है, यह इस करने के लिए अपने पूरे कार्यक्रम को कम कर सकते हैं:
int main(){
return 0;
}
ध्यान दें कि इस कार्यक्रम का प्रभाव आपके मूल रूप में ही है, और अब वहाँ सब पर कोई चर रहे हैं! अब उन्हें नाम देने की जरूरत नहीं है, है ना?
भले ही आपके कोड में चर का उपयोग किया गया हो, फिर भी जब आप प्रोग्राम लिखते हैं तो उनके नाम पूरी तरह से सुविधाजनक संकेत होते हैं, लेकिन प्रोसेसर द्वारा आपके कोड को निष्पादित करने की आवश्यकता नहीं होती है। जहां तक एक माइक्रोप्रोसेसर का संबंध है, इस तरह एक समारोह:
ADD # consumes top two values on stack (x and y), pushes result (z)
PUSH 2 # pushes 2 on stack
MULT # consumes top two values on stack (z and 2), pushes result
RET
अब कहानी:
int foo(int x, int y) {
int z = x + y;
return z * 2;
}
संकलित कोड है कि इस करता है, कुछ काल्पनिक सरल अनुदेश सेट वास्तुकला (आईएसए) में हो सकती है क्या वे परिवर्तनीय नाम कभी-कभी डिबगिंग उद्देश्यों के लिए संग्रहीत होते हैं। उदाहरण के लिए यदि आप जीसीसी का उपयोग कर रहे हैं तो आप "प्रतीक तालिका" को उत्सर्जित करने के लिए -g
विकल्प पास कर सकते हैं जिसमें डीबगिंग के लिए चर नामों जैसी चीजें शामिल हैं। लेकिन इसे केवल एक प्रोग्राम चलाने के लिए जरूरी नहीं है, और यह भाषा मानक द्वारा कवर नहीं है - यह एक कार्यान्वयन सुविधा है जो मंच से अलग है।
स्रोत
2015-12-20 14:59:57
एक प्रतीक तालिका एक संकलन निर्माण है, यह रनटाइम गुणों को प्रतिबिंबित नहीं करती है। मानचित्र फ़ाइलों और डीबग जानकारी स्थान के लिए प्रतीक नामों का विचार प्राप्त करने के लिए उपलब्ध स्रोत हैं, लेकिन वे प्रोग्राम के भीतर से उपयोग नहीं किए गए थे .. आरटीटीआई और आत्मनिरीक्षण के अन्य रूप हैं, लेकिन सी का कोई भी रूप नहीं है –