Tất cả chúng ta chắc chắn đã sử dụng typedef
s và #define
s lần này hay lần khác. Hôm nay trong khi làm việc với họ, tôi bắt đầu suy nghĩ về một điều.
Hãy xem xét 2 tình huống dưới đây để sử dụng int
kiểu dữ liệu với tên khác:
typedef int MYINTEGER
và
#define MYINTEGER int
Giống như tình huống trên, trong nhiều tình huống, chúng ta có thể hoàn thành rất tốt việc sử dụng #define và cũng thực hiện tương tự bằng cách sử dụng typedef, mặc dù cách chúng ta làm tương tự có thể hoàn toàn khác nhau. #define cũng có thể thực hiện các hành động MACRO mà typedef không thể.
Mặc dù lý do cơ bản để sử dụng chúng là khác nhau, làm việc của chúng khác nhau như thế nào? Khi nào nên ưu tiên hơn cái kia khi cả hai có thể được sử dụng? Ngoài ra, một trong những đảm bảo là nhanh hơn so với người khác trong tình huống nào? (ví dụ #define là chỉ thị tiền xử lý, vì vậy mọi thứ được thực hiện sớm hơn so với lúc biên dịch hoặc thời gian chạy).