मैं अपने .h फ़ाइल में परिभाषित करने के लिए मेरी .h फ़ाइल में एक एनएसएसटींग स्थिरता की कोशिश कर रहा हूं। मैं समझता हूं कि
extern NSString * const variableName;
.h और
NSString * const variableName = @"variableValue";
ऐसा करने का तरीका है। सी ट्यूटोरियल की जांच मैं देखता हूं कि const
को चर परिभाषाओं से पहले जाना चाहिए। मेरा सवाल यह है कि इसे .m और const NSString * variableName = @"variableValue";
में .m में extern const NSString * variableName;
के रूप में घोषित नहीं किया गया है। मुझे पता है कि यह काम नहीं करता है क्योंकि मुझे कंपाइलर चेतावनियों का सामना करना पड़ता है जो कहते हैं कि 'विधिनाम का उत्तीर्ण तर्क 1: पॉइंटर लक्ष्य प्रकार से क्वालीफायर को छोड़ दें'। इसका क्या मतलब है?उद्देश्य सी कॉन्स एनएसएसटींग * बनाम एनएसएसटींग * कॉन्स
उत्तर
यह वही नहीं है। कॉन्स संशोधक मूल्य पर, या सूचक के लिए सूचक पर लागू किया जा सकता है।
int * const
एक निरंतर सूचक (संशोधन करने योग्य नहीं) एक पूर्णांक के लिए (अपने मूल्य संशोधित किया जा सकता)
const int *
एक निरंतर पूर्णांक के लिए एक परिवर्तनीय सूचक (अपने मूल्य को संशोधित नहीं किया जा सकता है)
तो आप कल्पना कर सकते हैं:
const int * const;
लगातार सूचक लगातार करने के लिए एक सूचक नहीं है। लगातार सूचक का मतलब है कि सूचक स्थिर है। जैसे स्थिर सूचक int * const ptr2;
इंगित करता है कि ptr2
एक सूचक है जो स्थिर है। इसका मतलब है कि ptr2
किसी अन्य पूर्णांक को इंगित करने के लिए नहीं बनाया जा सकता है। हालांकि, ptr2
द्वारा इंगित पूर्णांक बदला जा सकता है।
जबकि निरंतर const int * ptr1;
पर सूचक इंगित करता है कि ptr1
एक सूचक है जो निरंतर पूर्णांक को इंगित करता है। पूर्णांक स्थिर है और बदला नहीं जा सकता है। हालांकि, सूचकांक ptr1
कुछ अन्य पूर्णांक को इंगित करने के लिए बनाया जा सकता है।
- 1. एनएसएसटींग को कॉन्स char
- 2. कॉन्स बनाम नई कॉन्स
- 3. कॉन्स बनाम स्टेटिक कॉन्स
- 4. एनएसएसटींग इंडेक्स उद्देश्य-सी
- 5. उद्देश्य-सी: - [एनएसएसटींग शब्दकाउंट]
- 6. स्थैतिक एनएसएसटींग उपयोग बनाम इनलाइन एनएसएसटींग स्थिरांक
- 7. एनएसएसटींग @ "\" बैकस्लैश चरित्र उद्देश्य-सी
- 8. कॉन्स शुद्धता: कॉन्स चार कॉन्स * कॉन्स गेटनाम कॉन्स (// सामान);
- 9. एनएसएसटींग
- 10. एनएसएसटींग
- 11. कॉन्स स्ट्रिंग बनाम #define
- 12. कॉन्स (सी ++)
- 13. एनएसएसटींग
- 14. सी ++ और कॉन्स - एक कॉन्स संदर्भ
- 15. PHP5: कॉन्स बनाम स्थैतिक
- 16. स्थिर कॉन्स बनाम #define
- 17. कॉन्स (टी कॉन्स *)
- 18. उद्देश्य-सी स्थैतिक इनलाइन एनएसएसटींग सरणी
- 19. एनएसएसटींग: isEqual बनाम isEqualToString
- 20. @ "बनाम [एनएसएसटींग स्ट्रिंग]
- 21. एनएसएमयूटेबलस्ट्रिंग और एनएसएसटींग दोनों का उद्देश्य क्या है?
- 22. सी ++ स्ट्रिंग अक्षर बनाम कॉन्स स्ट्रिंग्स
- 23. वर्चुअल फ़ंक्शन कॉन्स बनाम वर्चुअल फ़ंक्शन गैर-कॉन्स
- 24. एनएसएसटींग
- 25. एनएसएसटींग
- 26. एनएसएसटींग
- 27. एनएसएसटींग
- 28. एनएसएसटींग
- 29. एनएसएसटींग
- 30. एनएसएसटींग
उस पर विस्तार करने के लिए, यदि आप किसी पॉइंटर से निपट नहीं रहे हैं, तो 'const int' और 'int const' बिल्कुल वही हैं। 'एनएसएसटींगिंग पहले से ही अपरिवर्तनीय है, इसलिए केवल कोने को पॉइंटर पर लागू करने की आवश्यकता है (जो थोड़ा उलझन में हो सकता है क्योंकि ऑब्जेक्टिव-सी ऑब्जेक्ट्स हमेशा पॉइंटर्स के माध्यम से उपयोग किए जाते हैं)। – Wevah
@Macmade आपने एनएसएसटींग के संदर्भ में यह क्यों नहीं बताया क्योंकि संकेतक पॉइंटर के साथ अलग है? – jpswain
उस पर विस्तार करने के लिए, 'const int *' और 'int const *' समान हैं, लेकिन 'int * const' अलग है। – user102008