社区
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是什么意思,大家帮我看看,谢谢了
...全文
65
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相对于结构起始地址的距离)
#
define
用法集锦(非常全)
Definition:The #
define
Directive You can use the #
define
directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #
define
identifier token-string...
#
define
使用
标识符名字大小写均可 #
define
后面最好不要用分号;如果用了分号在替换的时候也会替换上分号 在预处理阶段,所有使用#
define
定义的名字都会被替换成对应的内容 例如:#
define
MAX 100 #
define
REG register #...
#ifndef与#
define
的用法
ifndef与
define
的用法
define
的用法
define
是C/C++中的宏定义,常用#
define
来定义常量。 如:#
define
PI 3.14 ifndef的用法 ifndef的用法在于避免重复包含和编译,在同一头文件被多次引用且又同时编译时,容易出现...
#
define
和#、##、@#解析:
预处理主要是以 # 开头的命令,例如 #include<stdio.h> #
define
等。预处理命令要放在所有函数之外,而且一般都放在源文件的前面。定义标识符是 #
define
最常见的用法,也可以说是没有参数的宏定义。流程为:#
define
...
#
define
(1)
define
常用操作
关于宏#
define
IN、OUT和INOUT的说明1. 例子参考 1. 例子 在工程中会有类似于上面这种宏定义出现 #ifndef IN #
define
IN #endif #ifndef OUT #
define
OUT #endif #ifndef INOUT #
define
INOUT #endif 这些宏标记...
C++ 语言
65,209
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章