请教此语句是啥意思,在线等待

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)); \
})
...全文
414 12 打赏 收藏 举报
写回复
用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
  • 打赏
  • 举报
回复
看不懂,蹭点分!
面向内置式永磁同步电机的MTPA效率优化与双闭环矢量控制对比仿真研究(Simulink仿真实现)内容概要:本文针对内置式永磁同步电机(IPMSM)的控制策略,基于Matlab/Simulink仿真平台,对比研究了最大转矩电流比(MTPA)效率优化控制与双闭环矢量控制两种方法。研究内容涵盖了在不同工况下两种控制策略的动态响应特性、效率表现及系统稳定性,重点分析了MTPA控制在提升电机效率方面的优势,以及双闭环矢量控制在精确转矩响应和宽速域运行中的性能特点。通过搭建详细的电机模型和控制算法模块,仿真验证了各自控制策略的可行性与有效性,为高性能电机驱动系统的设计与优化提供了仿真依据和技术参考。; 适合人群:具备电机控制、电力电子或自动化等相关专业背景,熟悉Matlab/Simulink仿真工具,从事电机驱动系统研发的工程师及研究生。; 使用场景及目标:①为内置式永磁同步电机的高效控制策略选型提供理论与仿真支持;②深入理解MTPA控制与矢量控制的核心原理、实现方法及性能差异;③应用于新能源汽车、工业伺服等对电机效率和动态性能有高要求的领域。; 阅读建议:在学习过程中应结合Simulink模型,仔细分析各控制模块的参数设置与信号流向,并通过改变负载、转速等条件进行仿真测试,对比分析两种控制策略的输出波形,以加深对理论知识的理解和工程应用的认知。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧