मैं निम्नलिखित सी ++ प्रोग्रामसी हेडर फाइलें बाइनरी के आकार को क्यों नहीं बढ़ाती हैं?
class MyClass {
public:
int i;
int j;
MyClass() {};
};
int main(void)
{
MyClass inst;
inst.i = 1;
inst.j = 2;
}
और मैं संकलित लिखा था।
# g++ program.cpp
# ls -l a.out
-rwxr-xr-x 1 root wheel 4837 Aug 7 20:50 a.out
फिर, मैं स्रोत फ़ाइल में हेडर फाइल iostream d #include
और मैं फिर से संकलित।
# g++ program.cpp
# ls -l a.out
-rwxr-xr-x 1 root wheel 6505 Aug 7 20:54 a.out
फ़ाइल आकार, अपेक्षित के रूप में, बढ़ाया गया था।
मैं भी निम्नलिखित सी कार्यक्रम
int main(void)
{
int i = 1;
int j = 2;
}
लिखा था और मैं
# gcc program.c
# ls -l a.out
-rwxr-xr-x 1 root wheel 4570 Aug 7 21:01 a.out
संकलित फिर, मैं हेडर फाइल stdio.h d #include
और मैं फिर से
# gcc program.c
# ls -l a.out
-rwxr-xr-x 1 root wheel 4570 Aug 7 21:04 a.out
संकलित विचित्र रूप से पर्याप्त, निष्पादन योग्य फाइलों का आकार वही बना रहा।
'बाहरी' परिभाषा कोड उत्पन्न नहीं करती है; वे सिर्फ कंपाइलर को जानते हैं कि वे मौजूद हैं, इसलिए यदि संकलक वास्तव में उपयोग किए जाते हैं तो संकलक उन्हें संदर्भित कर सकते हैं। – bdonlan
हां - एक मूल्यवान स्पष्टीकरण। –
मुझे नहीं लगता कि वे 'बाहरी' हैं - और यहां तक कि यदि वे हैं, तो कुछ परिभाषाएं होनी चाहिए। निष्पादन योग्य आकार में वृद्धि के लिए उनके ctors/dtors एक (शायद एकमात्र) कारण हैं। – sbi