खोज…


टिप्पणियों

बाधाएं मौजूदा C विशिष्टताओं (हाल ही में ISO-IEC 9899-2011) के सभी में उपयोग किया जाने वाला शब्द है। वे मानक के खंड 6 में वर्णित भाषा के तीन भागों में से एक हैं (साइड सिंटैक्स और शब्दार्थ के साथ)।

ISO-IEC 9899-2011 एक बाधा के रूप में परिभाषित करता है:

प्रतिबंध, या तो वाक्य-रचना या शब्दार्थ, जिसके द्वारा भाषा तत्वों की व्याख्या की जानी है

(कृपया ध्यान दें, सी मानक के संदर्भ में, एक "रनटाइम-बाधा" एक तरह की बाधा नहीं है और बड़े पैमाने पर अलग-अलग नियम हैं।)

दूसरे शब्दों में, एक बाधा भाषा के एक नियम का वर्णन करती है, जो अन्यथा एक वाक्यात्मक रूप से वैध कार्यक्रम को अवैध बना देगा। इस संबंध में कुछ हद तक अपरिभाषित व्यवहार की तरह हैं, कोई भी कार्यक्रम जो उनका पालन नहीं करता है, सी भाषा के संदर्भ में परिभाषित नहीं है।

दूसरी ओर बाधाओं को अपरिभाषित व्यवहार से बहुत महत्वपूर्ण अंतर है। अनुवाद चरण (संकलन का हिस्सा) के दौरान नैदानिक संदेश प्रदान करने के लिए सामान्य रूप से कार्यान्वयन की आवश्यकता होती है यदि एक बाधा का उल्लंघन होता है, तो यह संदेश एक चेतावनी हो सकता है या संकलन को रोक सकता है।

एक ही दायरे में चर नामों को डुप्लिकेट करें

सी मानक में व्यक्त बाधा का एक उदाहरण एक स्कोप 1 में घोषित एक ही नाम के दो चर हैं ) , उदाहरण के लिए:

void foo(int bar)
{
    int var;
    double var;
}

यह कोड बाधा को तोड़ता है और संकलन समय पर एक नैदानिक संदेश का उत्पादन करना चाहिए। यह अपरिभाषित व्यवहार की तुलना में बहुत उपयोगी है क्योंकि प्रोग्राम को चलाने से पहले डेवलपर को समस्या के बारे में सूचित किया जाएगा, संभवतः कुछ भी कर रहा है।

अड़चनें इस प्रकार की त्रुटियां होती हैं, जो संकलन के समय आसानी से पता चल जाती हैं जैसे कि ऐसे मुद्दे जिनके कारण अपरिभाषित व्यवहार होता है लेकिन संकलन के समय का पता लगाना कठिन या असंभव होगा, इस प्रकार अड़चनें नहीं हैं।


1) सटीक शब्दांकन:

C99

यदि किसी पहचानकर्ता के पास कोई लिंकेज नहीं है, तो 6.7.2.3 में निर्दिष्ट टैग के अलावा पहचानकर्ता की घोषणा (एक घोषणा या टाइप स्पेसियर में) एक से अधिक नहीं होगी।

यूनिरी अंकगणित संचालक

यूनिरी + और - ऑपरेटर केवल अंकगणितीय प्रकारों पर उपयोग करने योग्य हैं, इसलिए यदि उदाहरण के लिए कोई उन्हें एक संरचना पर उपयोग करने की कोशिश करता है, तो प्रोग्राम एक नैदानिक उत्पादन करेगा जैसे:

struct foo
{
    bool bar;
};

void baz(void)
{
   struct foo testStruct;
   -testStruct; /* This breaks the constraint so must produce a diagnostic */
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow