define علاوه بر تعریف ثوابت کار های دیگر هم انجام می دهد (تعریف ماکرو) اما تعریف ثوابت با استفاده از const فقط برای تعریف ثوابت است و از طرف دیگر کامپایلر هیچ type-check در زمان کامپایل برای ماکرو ها انجام نمی دهد ولی ثوابتی که با const تعریف می شوند type-safe هستند.
از define بیشتر برای استفاده از مقادیر ثابت در زمان کامپایل است (البته برای زمان اجرا نیز کاربرد دارد) مثل ثوابت مشخص کننده سایز آرایه ها ولی از const برای تعریف ثوابتی استفاده می شود که در زمان اجرا کاربرد دارند.