GCC 7.3 - 11.1. Implementation-defined behavior

11.1 कार्यान्वयन-परिभाषित व्यवहार




gcc

11.1 कार्यान्वयन-परिभाषित व्यवहार

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

  • भौतिक स्रोत की मैपिंग मल्टी-बाइट वर्णों को निष्पादन वर्ण सेट में फ़ाइल करती है।

    इनपुट कैरेक्टर सेट को -finput-charset विकल्प का उपयोग करके निर्दिष्ट किया जा सकता है, जबकि निष्पादन चरित्र सेट को -fexec-charset और -fold-exec-charset विकल्पों का उपयोग करके नियंत्रित किया जा सकता है।

  • पहचान के पात्र।

    C और C ++ मानक पहचानकर्ताओं को ' _ ' और अल्फ़ान्यूमेरिक वर्णों से मिलकर बनने की अनुमति देते हैं। C ++ सार्वभौमिक वर्ण नामों की भी अनुमति देता है। C99 और बाद में C मानक सार्वभौमिक चरित्र नाम और कार्यान्वयन-परिभाषित वर्ण दोनों की अनुमति देते हैं।

    जीसीसी पहचानकर्ताओं में ' $ ' के चरित्र को अधिकांश लक्ष्यों के लिए एक विस्तार के रूप में अनुमति देता है। यह std = स्विच की परवाह किए बिना सही है, क्योंकि यह एक्सटेंशन मानकों-अनुरूप कार्यक्रमों के साथ संघर्ष नहीं कर सकता है। जब प्रीप्रोसेसिंग कोडांतरक, हालांकि, डॉलर डिफ़ॉल्ट रूप से पहचानकर्ता वर्ण नहीं होते हैं।

    वर्तमान में लक्ष्य जो डिफ़ॉल्ट रूप से ' $ ' की अनुमति नहीं देते हैं, एआईआर ऑपरेटिंग सिस्टम के लिए AVR, IP2K, MMIX, MIPS Irix 3, ARM aout और PowerPC लक्ष्य हैं।

    आप -fdollars-in-पहचानकर्ताओं या fno- डॉलर-इन-पहचानकर्ताओं के साथ डिफ़ॉल्ट को ओवरराइड कर सकते हैं। fdollars-in-identifiers देखें।

  • व्हॉट्सएप पात्रों के गैर-खाली क्रम।

    शाब्दिक आउटपुट में, प्रत्येक व्हाट्सएप अनुक्रम एक ही स्थान पर ढह जाता है। सौंदर्य संबंधी कारणों के लिए, आउटपुट के प्रत्येक गैर-निर्देशात्मक लाइन पर पहला टोकन पर्याप्त रिक्त स्थान से पहले होता है जो एक ही कॉलम में दिखाई देता है जैसा कि उसने मूल स्रोत फ़ाइल में किया था।

  • प्रीप्रोसेसर अभिव्यक्तियों में वर्ण स्थिरांक का संख्यात्मक मान।

    प्रीप्रोसेसर और कंपाइलर चरित्र स्थिरांक की उसी तरह व्याख्या करते हैं; यानी '' '' जैसे एस्केप सीक्वेंस को वे मान दिए जाते हैं जो उनके पास लक्ष्य मशीन पर होते हैं।

    कंपाइलर एक बार में एक मल्टी-कैरेक्टर कैरेक्टर कंटीन्यूअस का मूल्यांकन करता है, पिछले मूल्य को टार्गेट कैरेक्टर की बिट्स द्वारा छोड़ा गया है, और फिर टारगेट किए गए नए कैरेक्टर के बिट-पैटर्न में आईएनजी-आईएनजी चरित्र। अंतिम बिट-पैटर्न को int दिया गया है, और इसलिए इस पर हस्ताक्षर किए गए हैं, चाहे एकल वर्ण पर हस्ताक्षर किए गए हों या नहीं। यदि निरंतर की तुलना में अधिक वर्ण हैं तो लक्ष्य में फिट होगा संकलक एक चेतावनी जारी करता है, और अतिरिक्त प्रमुख पात्रों को अनदेखा किया जाता है।

    उदाहरण के लिए, 8-बिट char साथ लक्ष्य के लिए 'ab' को ' int ( ' (अहस्ताक्षरित char) 'a' * 256 + (अहस्ताक्षरित char) 'b') , और '\234a' रूप में '\234a' ' (int) ((अहस्ताक्षरित चार)' \ 234 '* 256 + (अहस्ताक्षरित चार)' ए ')

  • स्रोत फ़ाइल शामिल

    प्रीप्रोसेसर हेडर फ़ाइलों को कैसे ढूँढता है, इस पर चर्चा के लिए ऑपरेशन शामिल करें

  • मैक्रो-विस्तारित ' #include ' निर्देश के परिणामस्वरूप फ़ाइल नाम की व्याख्या।

    कम्प्यूटेड शामिल देखें।

  • ' # प्रग्रह ' के निर्देश का उपचार है कि स्थूल-विस्तार के बाद एक मानक प्राग्म में परिणाम होता है।

    किसी भी ' #प्रगमा ' निर्देशन रेखा पर कोई स्थूल विस्तार नहीं होता है, इसलिए सवाल नहीं उठता।

    ध्यान दें कि जीसीसी अभी तक किसी भी मानक प्रस्ताव को लागू नहीं करता है।

अगला: कार्यान्वयन सीमाएँ , ऊपर: कार्यान्वयन विवरण [ Contents ] [ Index ]