[問題] 於編譯期檢查結構體大小, 若違反停止編譯
http://www.virtualbox.org/svn/vbox/trunk/src/VBox/Devices/PC/ipxe/src/include/ipxe/efi/Base.h
http://goo.gl/wZY49k
我在上面的網址發現一個有趣的解法
#define VERIFY_SIZE_OF(TYPE, Size) \
extern UINT8 _VerifySizeof##TYPE[ \
(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size)) \
]
VERIFY_SIZE_OF (BOOLEAN, 1);
我將其稍微簡化如下:
#define VERIFY_CONDITION(condition) \
extern char _VerifyCondition##__LINE__[ \
(condition) / (condition) \
]
VERIFY_CONDITION (sizeof(BOOLEAN) == 1);
各位是否見過更有趣的解法?