社区
C++ 语言
帖子详情
关于#define的小问题
gaoxingbugaoxing
2005-03-10 08:26:09
#define LIST_ENTRY(ptr, type, member) \
((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member)))
~~~~
什么意思?
程序中的使用:
p = LIST_ENTRY(pos, UdpSession, listItem);
我想知道define中的0是什么意思,大家帮我看看,谢谢了
...全文
44
1
打赏
收藏
关于#define的小问题
#define LIST_ENTRY(ptr, type, member) \ ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) ~~~~ 什么意思? 程序中的使用: p = LIST_ENTRY(pos, UdpSession, listItem); 我想知道define中的0是什么意思,大家帮我看看,谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pcboyxhy
2005-03-10
打赏
举报
回复
(unsigned long) (&((type *) 0)->member)
取得 type类型中的成员member在内存中相当于type的位移量。
struct foo
{
int i;
char f;
};
(unsigned long) (&((foo *) 0)->f)
取得 f在结构中的内存位移量(f相对于结构起始地址的距离)
172集通俗易懂的C语言从入门到项目实战教程
组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#
define
和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、...
#
define
的使用
在很多C程序中,我们会在一个源文件的开头看到#
define
的字眼,和
define
的英文解释相同——可以理解为给xxx下定义,这里可以是标识符甚至是一个函数,接下来的内容将会对#
define
进行详解 1.#
define
定义标识符 使用...
关于#
define
的理解
关于const在之后再讨论,本篇就#
define
的理解来进行一些说明和记录。 1.用#
define
定义常量的方法叫做宏定义,所定义的符号叫做宏。定义的方式为#
define
标识符常量 注意在结尾不需要加分号。 2.#
define
定义的符号是...
#ifndef/#
define
/#endif使用详解
想必很多人都看过“头文件中的 #ifndef/#
define
/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,...
#
define
用法,C语言#
define
详解
C语言中,可以用 #
define
定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。 预编译又叫预处理。预编译不是编译,而是编译前的处理。这个操作是在...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章