संकलित करने के बाद कोड आकार बहुत बड़ा है I एम्बेडेड सिस्टम (कॉर्टेक्स एम 3) विकसित करने पर काम कर रहा हूं। डिवाइस से सीरियल पोर्ट (पीसी स्क्रीन पर दिखाने के लिए) से कुछ डेटा भेजने के लिए, मैं putchar() विधि का उपयोग करके अपने स्वयं के कार्यों का उपयोग करता हूं।सी में sprintf() के बजाय कोई फ़ंक्शन?
जब मैं पूर्णांक या नाव भेजना चाहते हैं, मैं उन्हें वर्णों की स्ट्रिंग में बदलने के लिए में sprintf() का उपयोग करें और उन्हें सीरियल पोर्ट के लिए भेज दिया।
अब, समस्या यह है कि मैं किल यूविजन आईडीई का उपयोग कर रहा हूं और यह अधिकतम 32 केबी के साथ सीमित संस्करण है। जब भी मैं विभिन्न कार्यों में sprintf() को कॉल करता हूं, मुझे नहीं पता कि संकलन के बाद कोड का आकार बहुत अधिक बढ़ गया है। मैंने अब 32 केबी को पार कर लिया है और मुझे आश्चर्य है कि मुझे अपने कुछ कार्यों को बदलना है और sprintf के बजाय कुछ और उपयोग करना है!
कोई सुराग?
सभी के बाद 'फ्लोट' से बचने की कोशिश करें, क्योंकि उनके रनटाइम लाइब्रेरी घटक ज्यादातर मामलों में काफी बड़े और धीमे होते हैं। – glglgl
printf परिवार बहुत महंगा है क्योंकि इसे लागू करने के लिए आवश्यक बड़ी मात्रा में कोड, एएसपी फ्लोटिंग पॉइंट। एक पूर्णांक केवल printf एक उचित राशि है लेकिन अभी भी महंगा है। क्या आपको सचमुच लगता है कि आपको अपने एम्बेडेड माइक्रोकंट्रोलर कोड में printf() की आवश्यकता है? आप अपने स्वयं के सस्ता समाधान लागू कर सकते हैं। –
अपने कंपाइलर विक्रेताओं को उपलब्ध पुस्तकालयों को भी देखें। कार्यक्षमता कम होने के साथ अक्सर सी std libs के कई स्वाद होगा। उदाहरण के लिए, एक स्प्रिंटफ जो int और float को संभालती है, लेकिन वैज्ञानिक नोटेशन नहीं। –