2012-12-15 8 views
7

C11 मसौदा से:tmpfile_s में प्रतिबंधित करने का उद्देश्य क्या है?

सी 11 (n1570), § K.3.5.1.1 tmpfile_s समारोह
errno_t tmpfile_s(FILE * restrict * restrict streamptr);

restrict क्वालीफायर यहाँ का उद्देश्य क्या है?

क्योंकि कोई अन्य पैरामीटर नहीं है, इसलिए संकलक यह जानने में सक्षम है कि streamptrrestrict के बिना उपनाम नहीं है, है ना?

+0

विभाजन बाल के लिए +1: पी –

+0

ठीक है, यह फ़ंक्शन को पहले से बनाए गए फ़ाइल को वापस करने से रोकता है। आप क्या चाहते हैं tmpfile() करने के लिए, अब पत्थर में डाल दिया। –

उत्तर

5

उदाहरण के लिए FILE* जैसे stdout और stderr टाइप करने वाले कई वैश्विक चर हैं। तो बाएं restrict स्पष्ट रूप से इंगित करता है कि इनमें से कोई भी वापस नहीं किया जा सकता है, लौटा FILE* किसी अन्य के साथ उपनाम नहीं करता है। दूसरा restrict एक ही गारंटी देता है लेकिन एक स्तर अधिक है, आपको उस फ़ंक्शन में &stderr जैसे कुछ को पारित करने की अनुमति नहीं है। (अच्छी तरह से stderr सामान्य रूप से एक परिवर्तनीय नहीं है, लेकिन मुझे आशा है कि आप तस्वीर देखेंगे।)

+0

इस उत्तर जेन्स के लिए धन्यवाद। अब मुझे समझ आई। – md5

संबंधित मुद्दे