# সংজ্ঞায়িত হল প্রিপ্রসেসর নির্দেশিকা। তাই যখন আমরা #define ব্যবহার করে কিছু ম্যাক্রো সংজ্ঞায়িত করি, তখন এটি সংকলনের আগে তার মান দিয়ে কোডে প্রতিস্থাপন করে। তাই যখন কম্পাইলার কোড সম্পর্কে কিছু জানে না, সেই সময়েও ম্যাক্রো মান প্রতিস্থাপন করা হয়।
ধ্রুবক আসলে একটি পরিবর্তনশীল. এই পরিবর্তনশীল ঘোষণা করে, এটি মেমরি ইউনিট দখল করে। কিন্তু আমরা কনস্ট্যান্ট টাইপ ভেরিয়েবলের মান সরাসরি আপডেট করতে পারি না। আমরা কিছু পয়েন্টার মান ব্যবহার করে এটি পরিবর্তন করতে পারি।
কখনও কখনও প্রোগ্রামার ভাবতে পারে যে ম্যাক্রো ব্যবহার করা কনস্টের চেয়ে ভাল, কারণ এটি মেমরিতে কোনও অতিরিক্ত স্থান নিচ্ছে না, তবে কিছু ভাল কম্পাইলারের জন্য, অপ্টিমাইজ করা কোড প্রভাবিত করবে না। তারা খুব অনুরূপ।