मुझे पता है कि यह कम से कम बेवकूफ या अच्छी शैली है, सी में #define
के बजाय enum
एस के रूप में संख्यात्मक स्थिरांक घोषित करने के लिए।सी में स्ट्रिंग स्थिरांक कैसे घोषित करते हैं?
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
स्ट्रिंग स्थिरांक की परिभाषा के लिए एक समान नियम है?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
आप क्या पसंद करते हैं? यदि संभव हो तो किसी भी विधि के कुछ दोष दिखाएं।
आपकी स्पष्टीकरण के लिए धन्यवाद। निरंतर पूर्णांक मानों के लिए मैक्रो स्थिरांक या 'const int 'के बजाय' enum 'का उपयोग करने का कारण यह तथ्य है कि यह निरंतर पूर्णांक घोषित करने का एकमात्र प्रकार-सुरक्षित तरीका है जिसे पोर्टेबल को सरणी सीमा के रूप में उपयोग किया जा सकता है। खैर ... संकलन समय स्ट्रिंग concatenation लगभग मुझे स्ट्रिंग के लिए '# परिभाषा' का उपयोग करने पर बेच दिया, लेकिन लागू होने पर 'स्थिर 'का उपयोग कर प्रकार सुरक्षा के लिए मैं' const char * 'पर चिपके रहूंगा। संक्षेप में मैं सभी शेष के लिए पूर्णांक स्थिरांक और 'const' चर के लिए 'enum' का उपयोग करूंगा। –
टैट, मैं सुझाव दूंगा कि आप किसी भी चीज़ से चिपके रहें। * सभी स्थिरांक बराबर * नहीं हैं। यदि आप एकजुट नहीं होने जा रहे हैं, तो आपको # परिभाषित करने की आवश्यकता नहीं है, अगर आपको आकार की आवश्यकता नहीं है, तो आपको बिल्कुल परवाह नहीं है। जो मैं पूरी तरह से देखने में असफल रहा वह यह है कि 'कॉन्स्ट चार *' बेहतर होता है तो 'const char [] '* जहां स्थिर लागू होता है *। लेकिन फिर, यदि आपको आकार की आवश्यकता नहीं है, तो यह कोई भी बुरा नहीं है ;-) –