#define प्रीप्रोसेसर निर्देश है। इसलिए जब हम #define का उपयोग करके कुछ मैक्रो को परिभाषित करते हैं, तो यह संकलन से पहले इसके मूल्य के साथ कोड में बदल जाता है। इसलिए जब कंपाइलर को कोड के बारे में कुछ नहीं पता होता है, उस समय में भी मैक्रो वैल्यूज़ को बदल दिया जाता है।
स्थिरांक वास्तव में एक चर है। इस वेरिएबल को घोषित करके, यह मेमोरी यूनिट पर कब्जा कर लेता है। लेकिन हम निरंतर प्रकार के चर के मान को सीधे अपडेट नहीं कर सकते हैं। हम कुछ सूचक मानों का उपयोग करके इसे बदल सकते हैं।
कभी-कभी प्रोग्रामर सोच सकता है कि मैक्रो का उपयोग करना कॉन्स्ट से बेहतर है, क्योंकि यह मेमोरी में कोई अतिरिक्त स्थान नहीं ले रहा है, लेकिन कुछ अच्छे कंपाइलरों के लिए, अनुकूलित कोड प्रभावित नहीं होगा। वे बहुत समान हैं।