公司的一个宏定义,没看懂!
#define AI_GET_STRUCT_PTR(ptr, type, member) \ ((type *)( (char *)(ptr) - (unsigned int)(&((type *)0)->member) ))
#define AI_GET_STRUCT_PTR(ptr, type, member) \ ((type *)( (char *)(ptr) - (unsigned int)(&((type *)0)->member) ))
[解决办法]
第一句后面的‘\’,表示连接下一行,上句和下句是一句话;
宏定义就是用一个简短的句子代替一个长的句子;
当语句中出现前一部分即AI_GET_STRUCT_PTR(ptr, type, member) ,
机器编译时直接以后面的语句((type *)( (char *)(ptr) - (unsigned int)(&((type *)0)->member) ))代替;
AI_GET_STRUCT_PTR(ptr, type, member) 里面的ptr, type, member均为参数,就像函数一样,可以向后面传值;
宏定义也可以认为是一个函数,可以不带参数,也可以带参数;
这样说详细不?后面语句实现的功能上面说了:是得到type中的成员member的偏移量或者说位置。