Directive #define เป็น preprocessor directive preprocessor แทนที่ macros ด้วย body ของมันก่อนที่คอมไพเลอร์จะเห็น คิดว่ามันเป็น automatic search and replace ของ source code
การประกาศ const variable ประกาศตัวแปรจริงในภาษา ซึ่งคุณสามารถใช้เหมือนตัวแปรจริง: เอา address ได้ ส่งผ่านได้ cast ได้ convert ได้ ฯลฯ
ไม่มี compiler optimizations จะมี hidden cost ของ memory allocation เกี่ยวข้องกับทั้งสองในกรณีต่างกัน แต่ถ้ามี optimizations ที่เหมาะสม พวกมันจะเหมือนกันมากๆ อีกอย่าง preprocessor macros ไม่มี scope ในขณะที่ const values มี scope