मैं कैसे मुद्रित कर सकते हैं (कि stdout के लिए, है) सी में एक नाव बिना होने यह एक डबल पर पदोन्नत होने जब printf के लिए पारित variadic पैरामीटर पदोन्नति से परहेज?सी में एक नाव प्रिंट करते समय दोगुना करने के लिए
यहां मुद्दा यह है कि सी में variadic कार्यों डबल है, जो दो अनावश्यक रूपांतरण पड़ता है करने के लिए सभी नाव पैरामीटर को बढ़ावा देने है। उदाहरण के लिए, यदि आप जीसीसी में -Wdouble पदोन्नति पर बारी और संकलन
float f = 0.f;
printf("%f", f);
आप
warning: implicit conversion from 'float' to 'double' when passing argument to function
मैं के साथ (एक 72MHz एआरएम कॉर्टेक्स-एम 3 खेलने के लिए अपेक्षाकृत कम प्रसंस्करण शक्ति है मिल जाएगा), और मैं निश्चित रूप से फ्लोटिंग पॉइंट डेटा के ASCII आउटपुट पर बाधा डाल रहा हूं। चूंकि आर्किटेक्चर में हार्डवेयर और एफएफयू शुरू होने की कमी है, इसलिए सिंगल और डबल परिशुद्धता के बीच कनवर्ट करना मामलों की मदद नहीं करता है।
क्या सीधे सी में फ्लोट को अधिक कुशलतापूर्वक प्रिंट करने का कोई तरीका है?
किसी को भी इस भर आता है, तो मैं समाप्त हो गया बस अपना डेटा base64'ing, और डीकोड/स्वरूपित/सुंदर मुद्रित एक मेजबान machine.I पर सब कुछ भी बूस्ट :: कर्म माना जाता है, लेकिन उसमें सी ++ की आवश्यकता होती और वहां एक अच्छा मौका था कि यह मुझे कोई कोड आकार नहीं बचाएगा। –