Struct thì nó như một cái khuôn để compiler đúc một “object” khi mình sử dụng cái “object” đó.
=> Nếu không xài thì không cấp phát.
Còn enums, nó như là tên giả cho những giá trị để người đọc dễ hiểu hơn. như
enum HTTP_STATUS{
SUCCESS = 200,
BAD_REQUEST=400,
NOT_FOUND = 404,
}
if (httpStatus == SUCCESS) {
return "ok";
}
So với
if (httpStatus == 200) {
return "ok";
}
thì dễ thấy cái đầu tiên dễ hiểu hơn.
Tuy nhiên cái hay của Enum là gom nó thành 1 các giá trị + tên giả thành danh sách và biến nó thành 1 như “kiểu”. Điều này giúp bạn truyền những giá trị không nằm trong danh sách này sẽ bị báo lỗi ngay.
enum HTTP_STATUS {
SUCCESS = 200,
BAD_REQUEST=400,
NOT_FOUND = 404,
};
enum WEEK_DAY {
MONDAY,
TUESDAY,
};
typedef enum HTTP_STATUS HttpStatus;
int main() {
HttpStatus a = MONDAY; // lỗi nè :3
}
=> Compiler sẽ không cấp vùng nhớ cho nó. Vì SUCCESS hay MONDAY khi dịch ra thì những con số như này thôi.
if (httpStatus == 200) { // khi biên dịch ra trình biên dịch sẽ thay SUCCESS = 200
return "ok";
}