CONTAINING_RECORD宏

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//根据结构中某成员的地址得到整个结构的地址
struct  msginfo
{
     INT   a;
     char  b[20] = { "abc" };
};
void  CtestThreadDlg::OnBnClickedButton18()
{
     msginfo info = {};
     info.a = 12;
 
     msginfo * p = CONTAINING_RECORD(info.b, msginfo, b);
 
     int  d = p->a;
}

VS2015编译运行


















本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/2049736,如需转载请自行联系原作者




相关文章
|
4月前
|
网络协议 C++
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
|
3月前
宏#define命令练习2
宏#define命令练习2。
34 12
|
3月前
宏#define命令练习
宏#define命令练习。
33 9
|
3月前
宏#define命令练习3
宏#define命令练习3。
30 6
|
8月前
|
编译器 C++
offsetof宏的使用、模拟实现及 (size_t)&(((struct_type*)0)->mem_name)的解释
offsetof宏的使用、模拟实现及 (size_t)&(((struct_type*)0)->mem_name)的解释
用#define宏实现Add函数
用#define宏实现Add函数
110 0
|
编译器
#define定义的宏
#define定义的宏
127 0
#define定义的宏
|
Web App开发 C语言
分析 chrome 源码中 WARN_UNUSED_RESULT 宏
问题 今天浏览 chrome 源码时,发现了一个非常有意思的宏定义,它就是 WARN_UNUSED_RESULT ,用法如下图所示:
430 0
|
Java Android开发 C++
我个人实现的C++之get和set方法,使用宏定义
我个人实现的C++之get和set方法,使用宏定义
716 0
|
NoSQL
gdb打印结构体member offset
linux的crash有个好处就是可以方便打印结构体成员变量的offset, 有时候对汇编的时候, 需要偏移, 可惜crash需要一个活体才行, 不能单纯的vmlinux, 因为它就是这么设计的 gdb天生没有这个功能, 不过python可以实现 cat offset.py import gdb class Offsets(gdb.Command): def __in
2952 0