易截截图软件、单文件、免安装、纯绿色、仅160KB

请教c高手,define的问题

各位大侠,小弟有一个问题请教,如下
这个 #define stack_push 是一个函数,调用是这样的

int len;
stack_t *stack;
const char *curpos;
int seglen;
const char *next_slash;
int i;
---------
以上是变量的定义。

if (stack_push(curpos, const char *, stack) < 0 || stack_push(next_slash - curpos + 1, int, stack) < 0)
{
stack_destroy(stack);
return -1;
}


众大哥大姐们,我的问题不是这个调用,而是下面的这个宏定义我有个地方看不明白,就是||后面的部分 ,尤其是*((type *)(stack)->top)++ = (elem), 这部分,真的是看不明白,请各位高手指教一下吧。谢谢。

实际上这个是个表达式,但是(elem), 这个地方,就看不明白了,怎么替换好像都不对。高手帮我解释一下这段代码吧

#define stack_push(elem, type, stack) \
({ \
(stack)->top + sizeof (type) <= (stack)->base + (stack)->size || \
__stack_expand(stack, sizeof (type)) >= 0 ? \
*((type *)(stack)->top)++ = (elem), (stack)->top - (stack)->base : -1;    \
})


/* Never call the following function directly. */
int __stack_expand(stack_t *stack, unsigned int esize);

其实就是个?:表达式
?判断的条件是(stack)->top + sizeof (type) <= (stack)->base + (stack)->size 或者
__stack_expand(stack, sizeof (type)) >= 0

如果这两个表达式至少有一


相关问答:

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

C/S项目架构设计----求助 - Java / Java SE

本人正在用Java做一个C/S架构的项目, 
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。 
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......

c 语言里浮点相乘 为什么小数全为0了 - C/C++ / C语言

如题:c 语言里浮点相乘 为什么小数全为0了
float x=8266.206055;
float y=7226.922363;
float z;
z=x*y;
z=59739228.000000;
为什么得到的Z 小数点后面全为0了
呵呵,超出浮点能表示范围了。

麻烦有人知道 ......

请大家指点一下C/S结构的分页流程 - .NET技术 / C#

大家好,我是新手,刚开始接触C/S结构的程序,想要实现一个分页功能,大家有没有好点的分页控件或者程序之类的,当然源程序更好,否则说说流程也可以,小妹急啊,在线等。。。。
大家帮帮忙,谢了!

自己写呀! ......

C# SQL 的UPDATETEXT 问题 - .NET技术 / C#

A表 有两个字段 
  id 唯一数字域
  InfoTxt text 类型
 我现在要把 id 不是14 的所有 InfoTxt字段 文本后面 都加上 'aaa' 
按下面执行下来 只有表最后一行加上了 'aaa' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号