社区
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是什么意思,大家帮我看看,谢谢了
...全文
53
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
作业
写回复
配置赞助广告
用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
的常见用法
先来讲一讲#
define
的优点与缺点: [优点] 当在程序中想要修改某一个值得时候,而且这个值又在很多地方引用。这时候就能体现出宏定义的强大优点了。 例如:#
define
LINK LED0 //定义LINK的灯为LED01因为在程序中...
#
define
中#和##的作用
#
define
f(a,b) a##b #
define
d(a) #a #
define
s(a) d(a) void main( void ) { puts(d(f(a,b))); puts(s(f(a,b))); } 输出结果: f(a,b) ab 分析: ##把两个符号连起来 #a指把a当成符号,就是把#后面的看成字符串...
C:#
define
用法
#
define
用法 C语言中,可以用 #
define
定义一个标识符来表示一个常量。 其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。 预编译又叫预处理。预编译不是编译,而是编译前的处理。...
c语言之#
define
中# 和##作用
c语言之#
define
中# 和##作用 ##表示连接定义,而#则将定义变更为字符串。 #
define
_STR(x) _VAL(x) #
define
_VAL(x) #x 不直接定义#
define
_STR(x) #x ,因为x可以是个宏,一次替换时x不会被展开,会被直接转换...
#
define
和const的区别
#
define
和const的区别 本文只列举一些简单的区别,用于日常学习,多数引用别处内容 ...3.
define
定义的对象没有数据类型,编译器只能机械地进行字符替换,没有类型安全检查,即会出现“边际
问题
”或者是“括号
问题
”。而
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章