#Define là chỉ thị tiền xử lý. Vì vậy, khi chúng tôi xác định một số macro bằng cách sử dụng #define, nó sẽ thay thế thành mã bằng giá trị của nó trước khi biên dịch. Vì vậy, khi trình biên dịch không biết gì về mã, trong thời gian đó, các giá trị macro cũng được thay thế.
Hằng thực sự là một biến. Bằng cách khai báo biến này, nó chiếm đơn vị bộ nhớ. Nhưng chúng ta không thể cập nhật trực tiếp giá trị của biến kiểu hằng. Chúng tôi có thể thay đổi nó bằng cách sử dụng một số giá trị con trỏ.
Đôi khi lập trình viên có thể nghĩ rằng sử dụng macro tốt hơn const, vì điều này không chiếm thêm bất kỳ không gian nào vào bộ nhớ, nhưng đối với một số trình biên dịch tốt, mã được tối ưu hóa sẽ không ảnh hưởng. Chúng rất giống nhau.