यह सुरक्षित है क्योंकि आपको दो बार टाइप नाम का उल्लेख नहीं करना है और इस प्रकार के "अस्वीकृत" संस्करण के लिए उचित वर्तनी नहीं बनाना है। उदाहरण के लिए, आप
int *****p = malloc(100 * sizeof *p);
में "तारे गिनती" से तुलना करें कि की जरूरत नहीं है प्रकार के आधार पर
int *****p = malloc(100 * sizeof(int ****));
में sizeof
जहां भी सुनिश्चित करें कि आप की सही संख्या का इस्तेमाल किया बनाना है *
sizeof
के तहत।
किसी अन्य प्रकार पर स्विच करने के लिए आपको केवल दो जगहों के बजाय एक स्थान (p
की घोषणा) बदलनी होगी। और जिन लोगों के पास malloc
के परिणाम कास्टिंग करने की आदत है, उन्हें तीन स्थानों को बदलना है।
अधिक आम तौर पर, यह निम्नलिखित दिशानिर्देशों से चिपकने के लिए बहुत अधिक समझ में आता है: प्रकार के नाम घोषणाओं में हैं और कहीं और नहीं हैं। वास्तविक बयान टाइप-स्वतंत्र होना चाहिए। उन्हें किसी भी प्रकार के नामों का उल्लेख करना चाहिए या जितना संभव हो सके किसी अन्य प्रकार की विशिष्ट विशेषताओं का उपयोग करना चाहिए।
उत्तरार्द्ध का अर्थ है: अनावश्यक जानवरों से बचें। अनावश्यक प्रकार-विशिष्ट निरंतर वाक्यविन्यास से बचें (जैसे 0.0
या 0L
जहां एक सादा 0
पर्याप्त होगा)। sizeof
के तहत प्रकार के नामों का उल्लेख करने से बचें। और इसी तरह।
FYI करें, जब एक चर के साथ प्रयोग किया, 'sizeof' कोष्ठक की जरूरत नहीं है:' पी = malloc (sizeof * p); ' –
यह और भी है माता-पिता के साथ पठनीय –
@ टोमरएराजी: मैं अलग होना चाहता हूं; यह माता-पिता के साथ _less_ पठनीय है। माता-पिता के बिना, यह _cannot_ एक टाइपनाम है; माता-पिता की कमी मानव पाठक को असंबद्ध करने में मदद करती है। (मामूली समस्या: भी, माता-पिता सुझाव दे सकते हैं कि आकार एक कार्य है, जो यह नहीं है) – wildplasser