माइक्रोसॉफ्ट _ एस फंक्शंस, क्या वे अब सी ++ मानक का हिस्सा हैं? - सी ++, मानकों

मैंने हाल ही में एमएस विजुअल में अपना आईडीई बदल दिया हैस्टूडियो 2005 एमएसवीसी ++ 6 से आ रहा है, और मुझे बहुत सी बहिष्करण चेतावनियां मिली हैं। चेतावनी को अनदेखा करने के बजाय, मैंने उन्हें समकक्षों में बदलना शुरू कर दिया। हालांकि, मुझे पता चला कि ये माइक्रोसॉफ्ट-केवल कार्यान्वयन थे।

मैंने कहीं पढ़ा है कि वे इनके लिए मानक का हिस्सा बनने के लिए दबाव डाल रहे थे। क्या यह?

क्या इन _s कार्यों का उपयोग करना एक अच्छा विचार है? या मुझे कुछ और इस्तेमाल करना चाहिए?

धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 12

The *_s() कार्य सी मानक का हिस्सा नहीं हैं, लेकिन वहां एक लंबित "तकनीकी रिपोर्ट" प्रस्ताव है कि वे जोड़ा जा सकता है (मुझे यकीन है कि अगर TR में दिनचर्या बिल्कुल माइक्रोसॉफ्ट के रूप में ही कर रहे है "एस या अगर वे" फिर से ही समान) ।

TR 24731-1: सी पुस्तकालय मैं भाग के लिए एक्सटेंशन: सीमा-इंटरफेस की जांच:

यदि आप पुराने फ़ंक्शंस का उपयोग करना जारी रखना चाहते हैं, तो आप मैक्रो परिभाषित करके बहिष्करण चेतावनियों को शांत रख सकते हैं _CRT_SECURE_NO_WARNINGS (police _CRT_SECURE_NO_DEPRECATE जो अभी भी समर्थित हो सकता है) ।


उत्तर № 2 के लिए 1

आप अपने IDE नवीनीकृत और भी अपने Microsoft लायब्रेरीज़ नवीनीकृत ।सच कहूं तो आप अपने पुराने पुस्तकालयों का उपयोग जारी रखने के रूप में वे (पीछे संगतता के लिए) रखा जाना जारी रख सकते हैं, हालांकि माइक्रोसॉफ्ट ने कहा है कि वे वास्तव में इन पुराने कार्यों में से कुछ बाहर ले शुरू जा रहे हैं ।मैं कहूंगा कि अगर आप "आगे विकासशील फिर आप नए कार्यों का उपयोग कर सकते हैं; यदि आप "पीछे की तरफ विकासशील (या चिंता नहीं क्या संस्करण है) तो आप पुराने कार्यों का उपयोग करना चाहते हो सकता है ।


उत्तर № 3 के लिए 1

यदि आप "Microsoft प्लेटफ़ॉर्म को टार्गेट कर रहा है, तो सभी साधनों से उनका उपयोग करें ।यहां तक कि अगर आप "पुनः नहीं, तुम हमेशा उंहें अपने आप को लागू कर सकते है जब (या यदि) आप एक गैर के लिए अपने सॉफ़्टवेयर बंदरगाह Microsoft मंच की जरूरत है ।

सबसे खराब स्थिति यह है कि आप कुछ का उपयोग कर अंत #ifdefसशर्त संकलित करने के लिए एस ।


उत्तर के लिए 1 № 4

वे "मानकीकरण के लिए विचार किया जा रहा है, जहां तक मैं बता पा रहा हूं ।प्रस्ताव है TR २४७३१

के लिए के रूप में है कि यह "एक अच्छा विचार के लिए उंहें इस्तेमाल करते हैं, मैं" डी हां कहते हैं ।मैं डॉन "ज्यादा तरह वे त्रुटियों को पकड़ने की तरह टी, लेकिन मुझे लगता है कि आप उंहें अपने हेंडलर के साथ प्रदान कर सकते हैं ।यदि आपको क्रॉस-प्लेटफ़ॉर्म संगतता की आवश्यकता है, तो आपके पास दो विकल्प हैं: गैर-Windows प्लेटफ़ॉर्म पर मैक्रोज़ के साथ उन्हें कार्यान्वित करना या बहिष्करण चेतावनियों को बंद करना.

एक बड़ी codebase के माध्यम से एक समीक्षा करने के बाद मैं निर्धारित किया है कि यह "लगभग सभी प्रोग्रामर को स्ट्रिंग हेरफेर के लिए सी मानक पुस्तकालय कार्य सही ढंग से उपयोग करने के लिए असंभव है, तो सब कुछ है कि सही है कि एक स्वागत इसके अतिरिक्त है करना है ।


उत्तर के लिए 1 № 5

आप मानक कार्यों का उपयोग करें और अक्षम जो कुछ भी परपीड़क चेतावनी Microsoft डिफ़ॉल्ट रूप से आप मानकों को लिखने से हतोत्साहित करने के लिए बदल गया है चाहिए-अनुरूप कोड ।मैं गंभीरता से "_s कार्य" कभी मानक सी में जोड़ा जाएगा शक (हालांकि वे प्रस्तावित किया गया है) के बाद से वे एक विक्रेता के एक आविष्कार कर रहे है और किसी भी अंय विक्रेता द्वारा कार्यांवित नहीं किया गया है ।(अरे चलो "एस सी मानक में POSIX के सभी शामिल करते हुए हम इसे फिर से"...)


संबंधित सवाल
सबसे लोकप्रिय