2011-03-18 6 views
7

पर विज़ुअल सी ++ स्टूडियो/एक्सप्रेस सेट करना मैं आमतौर पर & जीसीसी और -साई ध्वज के साथ लिनक्स के तहत संकलित करता हूं; लेकिन मैं दृश्य C++ एक काम कर के साथ विवश हो गए हैं और जब भी मैं अपने सी कोड संकलन मैंसख्त एएनएसआई मोड

'fscanf' की तरह सभी Microsoft चेतावनी मिल: इस समारोह या चर असुरक्षित हो सकता है। इसके बजाए fscanf_s का उपयोग करने पर विचार करें।

मुझे एएनएसआई सी प्रोजेक्ट की स्थापना के लिए एमएसडीएन डेवलपर की साइट पर कुछ चरणों का पालन करने के बावजूद ये मिलता है, लेकिन सभी _s ("सुरक्षित") कॉल एएनएसआई सी नहीं हैं! मेरी विनम्र राय में माइक्रोसॉफ्ट मुझे इन चेतावनियों को नहीं दे रहा है।

विज़ुअल सी ++ स्टूडियो को सख्त एएनएसआई-केवल मोड में डालने पर कोई सुझाव?

धन्यवाद। > प्रीप्रोसेसर और _CRT_SECURE_NO_WARNING

जोड़ने यह एएनएसआई का पालन करने के लिए मजबूर कर रहा संकलक नहीं है -

उत्तर

2

विशिष्ट चेतावनियों को दबाने का एक तरीका स्रोत के लिए निम्न जैसा कुछ जोड़ना है।

#if defined(_WIN32) 
#pragma warning(disable:4996) 
#endif 
+0

इसे स्वीकार करने के लिए चुना गया, लेकिन अन्य सभी उत्तरों की सराहना करते हैं। – jparanich

4

इन चेतावनियों _CRT_SECURE_NO_WARNING

को परिभाषित जाओ Procect सेटिंग पर द्वारा दबा दिया जा सकता है। बस उपयोग को दबाता है ..._s चेतावनियां

6
_CRT_SECURE_NO_WARNING ing विशिष्ट चेतावनी आप अपने प्रश्न में उल्लेख किया संबोधित करेंगे

एक और जवाब में उल्लेख किया है, #define '।

यदि आप वास्तव में एक एएनएसआई-केवल मोड की तलाश में हैं, तो सबसे नज़दीकी बात /Za compiler switch है। विजुअल स्टूडियो आईडीई के अंदर, आप इसे प्रोजेक्ट के प्रॉपर्टी डायलॉग में देख सकते हैं (कॉन्फ़िगरेशन प्रॉपर्टीज | सी/सी ++ | भाषा | भाषा एक्सटेंशन अक्षम करें)।

ध्यान दें कि लगभग सभी विंडोज ऐप्स माइक्रोसॉफ्ट के कंपाइलर एक्सटेंशन के साथ सक्षम हैं; उदाहरण के लिए, मुझे नहीं लगता कि आप /Za सेट के साथ विंडोज एसडीके हेडर का उपभोग करने में भी सक्षम होंगे। यदि आपका कोड वास्तव में सख्त एएनएसआई है, तो आपको ठीक होना चाहिए। यदि आपके पास ऐसी परियोजना में कुछ विंडोज-विशिष्ट टुकड़े हैं जो अधिकतर सख्त एएनएसआई हैं, तो आप शायद उन स्रोतों को अलग कर सकते हैं और केवल उन अविभाज्य स्रोत फ़ाइलों को /Za अनसेट के साथ बना सकते हैं।

+0

आप सही हैं: '' और '/ Za' कंपाइलर स्विच एक-दूसरे से नफरत करते हैं। [माइक्रोसॉफ्ट कनेक्ट से लिंक - बग है * बंद *] (http://connect.microsoft.com/VisualStudio/feedback/details/780509/including- विन्डोज़-h-and-compiling-with-za-disable-भाषा- एक्सटेंशन)। – IInspectable