Tôi đã cố gắng thực hiện điều hành sizeof .. Tôi đã làm theo cách này ..thực hiện điều hành sizeof
#define my_sizeof(x) ((&x + 1) - &x)
Nhưng nó luôn luôn kết thúc trong việc đưa ra kết quả là '1' cho một trong các kiểu dữ liệu ..
tôi đã sau đó googled nó cho việc này .. và tôi tìm thấy mã typecasted
#define my_size(x) ((char *)(&x + 1) - (char *)&x)
và mã đang làm việc nếu nó được typecasted .. tôi d ont hiểu tại sao .. Mã này cũng được đệm một cách hoàn hảo CƠ CẤU ..
Nó cũng đang làm việc cho
#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
bất cứ ai có thể vui lòng giải thích làm thế nào là nó làm việc nếu typecasted và nếu không typecasted?
Thanks in advance ..
Truyền tới 'không dấu int' là một ý tưởng tồi. 'uintptr_t' là tốt hơn nhưng vẫn liên quan đến một chuyển đổi ẩn gây khó chịu nhưng không thể tránh khỏi. –