हमें किस मामले में कैसर्ट शामिल करना चाहिए?किस मामले में हमें <cassert> शामिल करना होगा?
उत्तर
किसी भी अन्य शीर्षलेख फ़ाइल की तरह, आप #include <cassert>
जब आप उस शीर्षलेख फ़ाइल में घोषित कुछ का उपयोग करते हैं, जैसे assert()
।
संक्षिप्त और स्पष्ट उत्तर के लिए धन्यवाद :) – Jane
एक आसानी से सुलभ reference
#include <iostream>
// uncomment to disable assert()
// #define NDEBUG
#include <cassert>
int main()
{
assert(2+2==4);
std::cout << "Execution continues past the first assert\n";
assert(2+2==5);
std::cout << "Execution continues past the second assert\n";
}
* नाइटपिकिंग *: cppreference.com ** एक संदर्भ ** है, नहीं ** संदर्भ **। यदि आप ** संदर्भ ** का संदर्भ देना चाहते हैं, तो "अंतर्राष्ट्रीय मानक आईएसओ/आईईसी 14882" या उसके संस्करणों में से एक का संदर्भ लें: "14882: 1998", "14882: 2003", या "14882: 2011"। –
मदद के लिए बहुत बहुत धन्यवाद! मैं इस तरह के बेवकूफ सवाल के लिए ssory हूँ। मैं अभी करता हूँ। – Jane
@ जेन आपका स्वागत है। कृपया एफएक्यू पर एक नज़र डालें: http: // stackoverflow।com/faq – TemplateRex
संक्षेप में, उसका उपयोग नहीं करते देखें; <assert.h>
का उपयोग करें।
सी ++ 11 ने "सी ...." हेडर की औपचारिक गारंटी को वैश्विक नामस्थान प्रदूषित नहीं किया है।
यह कभी भी अभ्यास की गारंटी नहीं थी, और अब यह औपचारिक गारंटी भी नहीं है।
इसलिए, सी ++ 11 के साथ "सी ...." हेडर वेरिएंट का उपयोग करने में अब कोई कल्पनीय लाभ नहीं है, जबकि एक संकलक और संस्करण के साथ अच्छी तरह से काम करने वाला कोड स्पष्ट और स्पष्ट नुकसान है वह कंपाइलर, उदाहरण के कारण, किसी अन्य कंपाइलर या संस्करण के साथ संकलित करने में विफल हो सकता है ग्लोबल नेमस्पेस में नाम टकराव या अलग अधिभार चयन।
SO, जबकि cassert
सी ++ 03 में बहुत अर्थहीन था (आप नामस्थान में मैक्रो नहीं डाल सकते हैं), यह पूरी तरह से व्यर्थ है - यहां तक कि एक सामान्य योजना का एक विशेष मामला - सी ++ में 1 1।
परिशिष्ट, दिसम्बर 22 2013:
मानक <CX> हैडर, जो बारी में करने के मामले में परिभाषित किया गया है के संदर्भ में एक सी ++ सी हैडर <Xh> हैडर को परिभाषित करता है संबंधित सी लाइब्रेरी हेडर।
सी ++ 11 §D.5/2:
“ हर सी हैडर, जिनमें से प्रत्येक प्रपत्र
name.h
का एक नाम है, जैसे कि बर्ताव करता है प्रत्येक नाम मानक पुस्तकालय नाम स्थान में रखा संबंधित cname शीर्षलेख वैश्विक नामस्थान क्षेत्र के भीतर रखा गया है। ”
सी ++ 11 §D.5/3 (गैर प्रामाणिक उदाहरण):
“ हैडर
<cstdlib>
विश्वासपूर्वक नाम स्थानstd
के भीतर अपनी घोषणाओं और परिभाषाओं प्रदान करता है। यह इन नामों को वैश्विक नामस्थान के भीतर भी प्रदान कर सकता है। शीर्षलेख<stdlib.h>
वैश्विक नामस्थान के भीतर ही वही घोषणाएं और परिभाषाएं प्रदान करता है, जितना सी मानक में उतना ही है। यह इन नामों को नामस्थानstd
के भीतर भी प्रदान कर सकता है। ”
स्टैक ओवरफ़्लो उपयोगकर्ता C.R. ’ टिप्पणी मुझे पता है कि इस तरह के कर दिया MinGW जी ++ 4.7 के रूप में ग्राम के कुछ संस्करणों ++।2, <X.h>
शीर्षकों के संबंध में गैर मानक हैं, उदाहरण के अधिभार की कमी sin
सी ++ मानक की आवश्यकता है कि:
मैं पहले से ही जानता था कि MinGW जी ++ 4.7.2 भी पूरी तरह से इस तरह के कार्यों swprintf
के रूप में अभाव है, और यह शुद्ध सी ++ पुस्तकालय जैसे C++ 11 std::to_string
कमी के रूप में में डिट्टो कमियों है। हालांकि, सी फंक्शन ओवरलोड की कमी के बारे में जानकारी मेरे लिए नई थी।
व्यवहार में जी ++ के साथ कमी भार के मतलब है
जी ++ मुद्दा, या
लापता जी का उपयोग कर ++ भार के परहेज,
जैसे अनदेखी केवलdouble sin(double)
, याका उपयोग कर
std
नाम स्थान का उपयोग कर overloads
(एक तो जी के साथ उनकी उपस्थिति ++ गारंटी करने के लिए<cmath>
शामिल करने के लिए की जरूरत है)।
क्रम जी ++ std
नाम स्थान का उपयोग करने के अयोग्य overloads, एक व्यावहारिक दृष्टिकोण हेडर इस संकलक के लिए रैपर परिभाषित करने के लिए है। मैंने g ++ कमियों को संबोधित करने के लिए उस दृष्टिकोण का उपयोग किया है। printf
परिवार के लिए। क्योंकि डेविड व्हीलर ने एक बार टिप्पणी की, “ कंप्यूटर विज्ञान में सभी समस्याओं को संकेत के दूसरे स्तर से हल किया जा सकता है ” और नरक;
फिर चीजों को व्यवस्थित किया जा सकता है ताकि मानक कोड जो g ++ के गायब ओवरलोड का उपयोग करता है, भी g ++ के साथ संकलित करता है। यह निश्चित मात्रा में कोड के साथ मानक को संकलक समायोजित करता है।
व्याख्या करने के लिए धन्यवाद! :) – Jane
मैं विजुअल स्टूडियो 10 प्रोफेशनल का उपयोग कर रहा हूं। क्या आपका मतलब है कि
यह अधिक सार्थक है और [* .h] हेडर (सी लाइब्रेरी के संबंध में) का सामान्य अभ्यास कोड को थोड़ा अधिक मजबूत बनाता है, अन्य कंपेलरों के साथ समस्याग्रस्त होने की संभावना कम होती है। –
assert.h एक मैक्रो फ़ंक्शन को परिभाषित करता है जिसे मानक डीबगिंग टूल के रूप में उपयोग किया जा सकता है।
- 1. किस मामले में हमें सुरक्षित विरासत की आवश्यकता है?
- 2. किस मामले में IENumerable <T> है। अनुकूलित अनुकूलित?
- 3. सी #: आपको किस मामले में संदर्भों को रद्द करना चाहिए?
- 4. स्ट्रिंग शामिल हैं - मामले
- 5. क्या मुझे अपने सी/सी ++ स्रोतों में #शामिल करना होगा?
- 6. हमें C++ में बाहरी "सी" {# शामिल <foo.h>} क्यों चाहिए?
- 7. किस स्थिति में document.open() वापस शून्य होगा?
- 8. सी स्ट्रिंग प्रारंभ में {} मामले शामिल है?
- 9. हमें क्यों जारी करना चाहिए?
- 10. किस मामले में स्थिर कार्यों के बजाय कारखाने वर्गों का उपयोग करना समझ में आता है?
- 11. किस मामले में आवश्यक घटनाओं से अलग हो रहे हैं?
- 12. क्या हमें <base href = "" /> का उपयोग करना चाहिए?
- 13. सीएसआरएफ-छूट किस मामले में खतरनाक हो सकती है?
- 14. इस मामले में फेंकने का किस प्रकार का अपवाद?
- 15. सी ++ में मानक ऑपरेटरों पर मुझे किस मामले में memcpy का उपयोग करना चाहिए?
- 16. किस मामले में superclass अमूर्त नहीं होना चाहिए?
- 17. ऊपरी मामले में कनवर्ट करना। किस तरह से अधिक पाइथनिक है?
- 18. क्या हमें संसाधनों में प्रारूप तारों को स्टोर करना चाहिए?
- 19. सुडो नोह अच्छा <- किस क्रम में?
- 20. क्या हमें कक्षा में हमेशा एक डिफ़ॉल्ट कन्स्ट्रक्टर शामिल करना चाहिए?
- 21. हमें कक्षा का उपयोग कब करना चाहिए और जब हमें
- 22. हमें <div id="fb-root"></div>
- 23. हमें सी # में अक्षर का उपयोग क्यों करना चाहिए?
- 24. स्विच स्टेटमेंट> एक ही मामले में एकाधिक केस मैचों को शामिल करना संभव है?
- 25. एसपीएल बनाम ऐरे: हमें एसपीएल का उपयोग कब करना चाहिए और हमें PHP में ऐरे का उपयोग कब करना चाहिए?
- 26. यह LINQ कथन कार्य में शामिल क्यों नहीं होगा?
- 27. क्या मुझे <मेटा जनरेटर> टैग शामिल करना चाहिए?
- 28. क्या ऐसे मामले हैं जहां सी ++ में "आखिरकार" निर्माण उपयोगी होगा?
- 29. क्या हमें उपयोगकर्ता कहानियों में व्यक्तित्व का उपयोग करना चाहिए?
- 30. क्या हमें जावास्क्रिप्ट एपीआई में विधि तर्क मान्य करना चाहिए?
+1 अनदेखा डाउनवॉट्स का मुकाबला करने के लिए। –
@ करीबी मतदाता: कृपया केवल उन प्रश्नों पर वोट दें जिन्हें आप समझते हैं। आपकी समझ की कमी अर्थ की कमी का संकेत नहीं देती है, या किसी प्रश्न का उत्तर देना असंभव है। आपकी समझ की कमी केवल इंगित करती है कि आप समझ में नहीं आते हैं, जो इस मामले पर वोट देने के लिए सक्षम होने के विपरीत है। –
यह * असली सवाल नहीं है *? क्योंकि यह छोटा है? यह एक कानूनी सवाल है। यह विषय से बाहर नहीं है, यह वास्तविक है, बिल्कुल भी स्थानीय नहीं है और असंवैधानिक नहीं है। यह * एक डुप्ली हो सकता है, लेकिन मुझे यकीन नहीं है। अगर यह बंद हो जाता है, तो मैं इसे फिर से खोलूंगा * तुरंत *। –