asteriskchina 发表于 2014-04-09 11:17

typeof使用问题

extern unsigned int __unsigned_int_flags_dummy;

#define test_flag(p,flag)                 ({ \
                                        typeof ((p)->flags) __p = (p)->flags; \
                                        typeof (__unsigned_int_flags_dummy) __x = 0; \
                                        (void) (&__p == &__x); \
                                        ((p)->flags & (flag)); \
                                        })
问题:
1、(void) (&__p == &__x); \ 这行的作用是什么。
2、看代码,貌似只有((p)->flags & (flag)); \这行才有作用,那前三行的目的是啥呢。

高手解答啊!

asteriskchina 发表于 2014-04-09 11:38

自己先解答下:
目的是为了检查类型是否相符,即在调用该函数时,flags的类型需要是unsigned int,如果不是,则编译器会进行报警。
页: [1]
查看完整版本: typeof使用问题