#define typecheck(type,x) \
({ type __dummy; \
typeof(x) __dummy2; \
(void)(&__dummy == &__dummy2); \
1; \
})
展开宏:
unsigned long __dummy; //定义__dummy
typeof(flags) __dummy2; //定义__dummy2
(void)(&__dummy == &__dummy2); //类型不一致会警告
1; //似乎只是一个语句
编译时会检查flags是否是unsigned long 类型,如果不是会警告“comparison of distinct pointer types lacks a cast”。
阅读(1047) | 评论(0) | 转发(0) |