2011-01-16 19 views
6

यह शायद एक बेवकूफ सवाल है, लेकिन मुझे वह जवाब नहीं मिला जिसे मैं ढूंढ रहा था। साथ ही, मैं अनिश्चित था कि यह एक सी ++ प्रश्न या वीएस -2010 प्रश्न था, लेकिन जो जवाब मैं ढूंढ रहा हूं वह एक तकनीकी पीओवी है, इसलिए मैं यहां समाप्त हुआ।सी ++ अभी भी stdio.h का उपयोग क्यों कर रहा है?

जब आप VS2010 में एक नया कंसोल आवेदन परियोजना शुरू करेंगे, तो वह stdafx.h, जो बारी में stdio.h शामिल भी शामिल है। जवाब stdio.h बनाम iostream के बारे में मैंने पाया था और अधिक या कम:

stdio.h सी में इस्तेमाल किया गया था और iostream सी ++

मैं नहीं जानता में प्रयोग किया जाता है, तो यह सही है या गलत, लेकिन ...

मेरा प्रश्न है: stdio.h अभी भी सी ++ परियोजनाओं में स्वचालित रूप से क्यों शामिल है? Iostream पर्याप्त नहीं होगा?

उत्तर

3

पुराने सी ++ कार्यान्वयन में आईओ धाराएं बहुत धीमी थीं, अग्रणी प्रोग्रामर stdio.h का उपयोग जारी रखने के लिए अग्रणी थे। जाहिर है, इसे अतीत में stdafx.h में शामिल किया गया था और अब उस हेडर से हटाया नहीं जा सकता है क्योंकि इसे हटाने से मौजूदा कोड तोड़ जाएगा।

+4

__new__ परियोजनाओं के लिए डिफ़ॉल्ट को हटाने से मौजूदा कोड तोड़ जाएगा? अधिकतर फाइलों को नई परियोजनाओं में गिराए जाने के लिए '# शामिल करें stdio.h' – James

+0

यदि यह सही है, तो मुझे लगता है कि यह मेरे प्रश्न का उत्तर सटीक रूप से उत्तर देता है। दूसरे शब्दों में यह एक बचे हुए है जब stdio.h (अधिक बार) सीओ ++ में आईओस्ट्रीम की तुलना में आईओ ऑपरेशंस के लिए उपयोग किया जाता था, और आजकल सी ++ प्रोग्रामिंग के लिए कम या ज्यादा अप्रचलित माना जा सकता है? इसके अलावा, जैसा कि यिपी-काई-ये कहते हैं, मैं बस एक खाली परियोजना के साथ शुरू करने के लिए बेहतर हो सकता हूं। धन्यवाद! – Roger

+1

मैं हेडर का उपयोग नहीं करता जैसे कि 'stdafx.h' वैसे भी। सी ++ की समावेशन तंत्र उतनी ही कच्ची है जितनी है, कंपाइलर विक्रेताओं को यह बुरा नहीं करना चाहिए। –

3

आमतौर पर परियोजनाएं Create Empty Project का उपयोग करके बनाई गई हैं, ताकि आप अपने शामिल और प्रीकंपील्ड हेडर को स्वयं अनुकूलित कर सकें।

मुझे नहीं पता कि यह "डिफ़ॉल्ट" क्यों होता है, लेकिन आपके प्रोजेक्ट को स्क्रैच से सेट करना एक अच्छी बात है जैसा मैंने पहले वर्णित किया है।

0

भले ही आप स्ट्रीम आउटपुट का उपयोग कर रहे हों, कुछ प्रारूपण करने में सक्षम होना अच्छा है। तो, यदि कुछ और नहीं है, तो कभी-कभी स्प्रिंटफ का उपयोग किया जाएगा। स्प्रिंटफ stdio.h

+1

स्ट्रीम में स्वरूपण है। और बूस्ट.फॉर्मेट है। Sprintf के लिए कोई ज़रूरत नहीं है (और आपको वैसे भी snprintf का उपयोग करना चाहिए)। –

+1

हाँ, बूस्ट ... कोड का ज़िलियन, पागल संकलन त्रुटियां, और जो आपको मिलता है वह बूस्ट है। इसके बजाय printf()! हैलो-दुनिया के लिए एक उचित सौदा नहीं है। – mbaitoff

-1

संभवतः क्योंकि दृश्य स्टूडियो लक्ष्य मॉर्ट प्रोग्रामर लक्षित करता है, जो प्रिंटफ के बिना 'मेरा पहला सी ++' प्रोग्राम नहीं प्राप्त कर पाएंगे, और वे निर्णय लेंगे कि उत्पाद सही काम नहीं करता है।

वोटिंग याचिका से पहले Google विजुअल स्टूडियो मॉर्ट व्यक्तित्व।

संबंधित मुद्दे