社区
C语言
帖子详情
请教此语句是啥意思,在线等待
wlxin
2006-11-15 07:21:55
#define ast_test_flag(p,flag) ({ \
typeof ((p)->flags) __p = (p)->flags; \
typeof (__unsigned_int_flags_dummy) __x = 0; \
(void) (&__p == &__x); \
((p)->flags & (flag)); \
})
...全文
381
12
打赏
收藏
请教此语句是啥意思,在线等待
#define ast_test_flag(p,flag) ({ \ typeof ((p)->flags) __p = (p)->flags; \ typeof (__unsigned_int_flags_dummy) __x = 0; \ (void) (&__p == &__x); \ ((p)->flags & (flag)); \ })
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
watermelontx
2006-11-18
打赏
举报
回复
宏定义,,这样定义,可读性太差,,安全方面也不好!
lockhall
2006-11-18
打赏
举报
回复
就是宏定义.定义中的\表示换行.
xiaonong
2006-11-16
打赏
举报
回复
啊,看不懂
处于崩溃中......
怎么这么悬乎呢???
wlxin
2006-11-15
打赏
举报
回复
木脑壳:为什么要那么定义,能说明原因不
再个
typeof ((p)->flags) __p = (p)->flags; 那个__p是啥东东,有啥用
typeof (__unsigned_int_flags_dummy) __x = 0; __x又是啥玩意
(void) (&__p == &__x); 这句话啥意思,有什么用
((p)->flags & (flag)); 这句话有什么用
alan001
2006-11-15
打赏
举报
回复
相当于这句:
------------
({if((p)->flags)__p=(p)->flags;if(__unsigned_int_flags_dummy)__x=0;((p)->flags&flag));})
alan001
2006-11-15
打赏
举报
回复
应该先了解和确定({........})的作用,
比方:
b=({a=1;a=2;});能不能编译通过......................
楼主试一试..........
一分之千
2006-11-15
打赏
举报
回复
#define ast_test_flag(p,flag) ({ \
typeof ((p)->flags) __p = (p)->flags; \
typeof (__unsigned_int_flags_dummy) __x = 0; \
(void) (&__p == &__x); \
((p)->flags & (flag)); \
})
这个是C语言中的预处理语句。c语言中经常会使用#define来代替一个函数的定义 在程序中任何出现ast_test_flag(p,flag)的地方都会自动被 ({ \
typeof ((p)->flags) __p = (p)->flags; \
typeof (__unsigned_int_flags_dummy) __x = 0; \
(void) (&__p == &__x); \
((p)->flags & (flag)); \
})
所替换。
在C++里可以使用内联函数来代替
alan001
2006-11-15
打赏
举报
回复
这句没有意义:(void) (&__p == &__x);
alan001
2006-11-15
打赏
举报
回复
先用 if 代替 typeof 看看编译能不能通过,,
yingge
2006-11-15
打赏
举报
回复
#define ast_test_flag(p,flag) ({ \
typeof ((p)->flags) __p = (p)->flags; \
typeof (__unsigned_int_flags_dummy) __x = 0; \
(void) (&__p == &__x); \
((p)->flags & (flag)); \
})
为什么这样定义宏?似乎下面这样更好些吧
#define ast_test_flag(p,flag) (do{ \
typeof ((p)->flags) __p = (p)->flags; \
typeof (__unsigned_int_flags_dummy) __x = 0; \
(void) (&__p == &__x); \
((p)->flags & (flag)); \
}while(0))
Ninstein
2006-11-15
打赏
举报
回复
宏 没什么高深的
\是换行符
LiChenYue
2006-11-15
打赏
举报
回复
看不懂,蹭点分!
【创新设计】(四川专用)高考语文一轮复习 第1部分 第8单元 附录
1. 生活雅语:请求原谅用“包涵”,请求帮助用“劳驾”,
请教
问题用“
请教
”,得到帮助说“借光”,无法陪伴说“失陪”,归还物品说“奉还”,需要考虑说“斟酌”,请人勿送说“留步”,对方到场说“光临”,未能...
嵌入式Linux GDB调试技术
* start:开始执行程序,停在main函数第一行
语句
前面
等待
命令 * step(或s):执行下一行
语句
,如果有函数调用则进入到函数中 实验步骤: 1. 编译或使用依据掌握的C文件。记住带-g参数编译。在makefile文本中将gcc...
很简易windows版批处理
例如,一个简单的批处理文件可能包含像`echo Hello World`和`pause`这样的命令,前者用于在命令行显示文本,后者则会暂停批处理的执行,
等待
用户按下任意键继续。 批处理的应用广泛,包括但不限于: 1. 文件管理和...
基础模块上册试题(卷).doc
- 成语如"不耻下问"(不因为向不如自己的人
请教
而感到羞耻)、"守株待兔"(消极
等待
,不主动进取)等,需要学生理解其含义并能正确运用在语境中。同时,题目中提到的"慰藉"、"心喜若狂"等词语的正确搭配也是考察...
论如何提高C语言教学效果.pdf
同时,“参考文献”和“专业指导”指出了教师在教学过程中,应适当引入参考文献、研究资料等辅助材料,以及向专业书籍或专家
请教
,不断更新教学内容和方法,以适应计算机技术的快速发展和变化。 文章中提出的问题和...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章