Gần đây tôi đã đến khi cần có các xác nhận biên dịch trong C++ để kiểm tra xem các kích thước của hai loại có bằng nhau hay không.Xác nhận thời gian biên dịch trong C++?
tôi thấy macro sau trên web (tuyên bố có nguồn gốc từ hạt nhân Linux):
#define X_ASSERT(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
mà tôi sử dụng như vậy:
X_ASSERT(sizeof(Botan::byte) != sizeof(char));
này được tôi tò mò - mặc dù điều này hoạt động, có cách nào hiệu quả hơn không? (rõ ràng là có nhiều hơn một cách, vì nó là) Có lợi thế hay bất lợi cho các phương pháp nhất định?
Cảm ơn tất cả các câu trả lời tất cả mọi người, rất thú vị. Tôi rất vui khi thấy C++ 0x đang nhận 'static_assert', tôi không nhớ đã đọc về điều đó trước đây. ;) –