[问题] 于编译期检查结构体大小, 若违反停止编译
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);
各位是否见过更有趣的解法?