Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C में #define और const का अंतर


C में कॉन्स्टेंट मान परिभाषित करने के दो मुख्य तरीके हैं: प्रीप्रोसेसर मैक्रो (#define) और const क्वालिफायर।

तुलना

विशेषता#define (मैक्रो)const वेरिएबल
प्रोसेसिंग चरणप्रीप्रोसेसिंग (कंपाइलेशन से पहले)कंपाइलेशन
टाइप चेकिंगनहींहाँ
मेमोरी उपयोगनहीं (टेक्स्ट रिप्लेसमेंट)हाँ (वेरिएबल के लिए स्टोरेज)
स्कोपफाइल स्कोप (जहां परिभाषित)ब्लॉक/फाइल स्कोप (नियमों का पालन)
डिबगिंगकठिन (सिंबल टेबल में नहीं)आसान (डिबगर में दिखता है)
एड्रेस ले सकते हैं?नहींहाँ (&const_var)
पॉइंटर से संशोधनलागू नहींसंभव लेकिन अनडिफाइंड बिहेवियर

उदाहरण

#define PI 3.14159        // मैक्रो - कोई टाइप नहीं
const double PI_VAL = 3.14159;  // टाइप्ड कॉन्स्टेंट

// मैक्रो समस्या: कोई टाइप चेकिंग नहीं
#define SQUARE(x) x * x
// SQUARE(3+2) → 3+2*3+2 = 11 (गलत!)

// const फंक्शन बेहतर
inline int square(int x) { return x * x; }

सर्वोत्तम अभ्यास

  • const प्राथमिकता दें: टाइप सेफ्टी, स्कोप नियम, डिबगिंग सपोर्ट।
  • #define उपयोग करें: कंपाइल-टाइम कॉन्फिगरेशन, कंडीशनल कंपाइलेशन, मैक्रो फंक्शन्स (सावधानी से)।
  • आधुनिक C++ में constexpr (C++11) कॉन्स्टेंट एक्सप्रेशन के लिए सर्वोत्तम है।

नोट

अच्छे ऑप्टिमाइज़िंग कंपाइलर्स const वेरिएबल्स को मेमोरी आवंटित किए बिना सीधे मान में बदल सकते हैं, इसलिए प्रदर्शन अंतर नगण्य होता है।

  1. - C# और Visual C# में अंतर

    C# और Visual C# दोनों Same हैं। जब आप C# Development के लिए Visual Studio का उपयोग करते हैं, तो इसे Visual C# कहा जाता है। Visual C# को C# का Implementation Consider करें। Microsoft Visual Studio, Programs, Web Apps, Web Services आदि Develop करने के लिए Microsoft का एक IDE है। Visual Studio का Curre

  1. - C# और .Net में अंतर

    C# एक Programming Language है और .NET एक Framework है। .NET में Common Language Runtime (CLR) होता है, जो .NET Framework का एक Virtual Component है। .NET में न केवल C#, बल्कि इसके माध्यम से आप VB, F# आदि के साथ काम कर सकते हैं। C# .NET का हिस्सा है और इसमें निम्न Features हैं: Boolean Conditions Au

  1. - Go और Java में अंतर

    GoGo एक प्रक्रियात्मक प्रोग्रामिंग भाषा है। प्रोग्राम पैकेज का उपयोग करके असेंबल किए जाते हैं। यह डायनामिक भाषाओं के समान पैटर्न को अपनाने वाले वातावरण का समर्थन करता है।JavaJava एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है। Java काफी तेज, विश्वसनीय और सुरक्षित है। यह सबसे व्यापक रूप से उपयोग की जाने व