请教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
如果这两个表达式至少有一
相关问答:
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
本人正在用Java做一个C/S架构的项目,
可是由于项目比较大,前期对架构的设计尤其重要,因为后期可能随时会加个功能或者去掉某些功能。
所以特地寻求如何设计C/S的架构使程序更加面向对象更加易于维 ......
如题:c 语言里浮点相乘 为什么小数全为0了
float x=8266.206055;
float y=7226.922363;
float z;
z=x*y;
z=59739228.000000;
为什么得到的Z 小数点后面全为0了
呵呵,超出浮点能表示范围了。
麻烦有人知道 ......
大家好,我是新手,刚开始接触C/S结构的程序,想要实现一个分页功能,大家有没有好点的分页控件或者程序之类的,当然源程序更好,否则说说流程也可以,小妹急啊,在线等。。。。
大家帮帮忙,谢了!
自己写呀!
......
A表 有两个字段
id 唯一数字域
InfoTxt text 类型
我现在要把 id 不是14 的所有 InfoTxt字段 文本后面 都加上 'aaa'
按下面执行下来 只有表最后一行加上了 'aaa' ......