unsafe - Nested calls can lead to uninitialized arguments in C? -
क्या लेन
सही ढंग से आरंभ और set_array
कॉल में सुरक्षित है?
शून्य object_copy (ऑब्जेक्ट * स्व, ऑब्जेक्ट * obj) {int len; Object_set_array (आत्म, object_get_array (obj, और len), लेन); }
यदि नहीं, तो आप क्या सुझाएंगे?
नहीं - फ़ंक्शन कॉल में तर्क के लिए मूल्यांकन का कोई परिभाषित आदेश नहीं है।
भले ही object_get_array ()
को कॉल को object_set_array ()
से कॉल करने से पहले, उस मान को संकलक गणना और पास करता है < object_get_array ()
को कॉल करने से पहले कोड> ऑब्जेक्ट_सेट_अरे () लेन
पैरामीटर के लिए किया जा सकता है।
I ' मुझे यकीन नहीं है कि object_set_array ()
कॉल के लिए 2 पैरामीटर क्या करना है - शायद आप अल्पविराम ऑपरेटर का उपयोग करना चाहते हैं:
शून्य object_foo (ऑब्जेक्ट * सेल्फ) , वस्तु * obj) {int len; Object_set_array (स्वयं, (object_get_array (obj, और len), लेन)); }
कौन काम करेगा, लेकिन भ्रामक है और कुछ जिसे मैं सुझाऊंगा।
मुझे लगता है कि आप क्या चाहते हैं:
शून्य ऑब्जेक्ट_फू (ऑब्जेक्ट * सेल्फ, ऑब्जेक्ट * ओबजे) {int len; Object_get_array (obj, और लैन); // obj object_set_array (स्व, लेन) से लंबाई प्राप्त करें); // स्वयं के लिए लेन सेट करें
Comments
Post a Comment