免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1266 | 回复: 2
打印 上一主题 下一主题

[学习分享] 错误之处非常不解,求大神赐教! [复制链接]

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-04-14 06:20:0015-16赛季CBA联赛之北京
日期:2016-04-21 09:17:18
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-04-11 20:51 |只看该作者 |倒序浏览
void cleanup(void *arg)
        {
                printf("cleanup: %s\n",(char *)arg);
        }

void *thr_fn1(void *arg)
        {
                printf("thread 1 start\n");
                pthread_cleanup_push(cleanup,"thread 1 first handler");
                pthread_cleanup_push(cleanup,"thread 1 second handler");
                if(arg)
                        return ((void *)1);
                pthread_cleanup_pop(0);
                pthread_cleanup_pop(0);
                pthread_exit((void *)1);
        }

void *thr_fn2(void *arg)
        {
                printf("cleanup:%s\n",(char *)arg);
                pthread_cleanup_push(cleanup,"thread 2 first handler");
                pthread_cleanup_push(cleanup,"thread 2 second handler");
                if(arg)
                        return ((void *)2);
                pthread_cleanup_pop(0);
                pthread_cheanup_pop(0);
                pthread_exit((void *)2);
        }

int main(void)
        {
                int err;
                pthread_t tid1,tid2;
                void *tret;

                err=pthread_create(&tid1,NULL,thr_fn1,(void *)1);

                err=pthread_create(&tid2,NULL,thr_fn2,(void *)1);

                err=pthread_join(tid1,&tret);
                printf("thread 1 exit code %ld\n",(long)tret);

                err=pthread_join(tid2,&tret);
                printf("thread 2 exit code %ld\n",(long)tret);

                return 0;
        }

提示错误如下:simplepush_pop.c: In function ‘thr_fn2’:
simplepush_pop.c:32:1: error: expected ‘while’ before ‘int’
int main(void)
^
simplepush_pop.c:49:2: error: expected declaration or statement at end of input
  }  此处是main函数最后的右边大括弧
  ^
simplepush_pop.c:49:2: error: expected declaration or statement at end of input



论坛徽章:
72
20周年集字徽章-20	
日期:2020-10-28 14:04:30操作系统版块每日发帖之星
日期:2016-07-13 06:20:0015-16赛季CBA联赛之广夏
日期:2016-07-10 09:04:02数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00操作系统版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-04 06:20:00数据库技术版块每日发帖之星
日期:2016-07-03 06:20:00操作系统版块每日发帖之星
日期:2016-07-03 06:20:00数据库技术版块每日发帖之星
日期:2016-07-02 06:20:00操作系统版块每日发帖之星
日期:2016-07-02 06:20:00
2 [报告]
发表于 2016-04-12 10:47 |只看该作者
pthread_cleanup_push()带有一个"{",而pthread_cleanup_pop()带有一个"}",因此这两个函数必须成对出现,且必须位于程序的同一级别的代码段中才能通过编译。
你再仔细排查一下。

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-04-14 06:20:0015-16赛季CBA联赛之北京
日期:2016-04-21 09:17:18
3 [报告]
发表于 2016-04-12 11:17 |只看该作者
回复 2# cjfeii


   谢谢你,我发现错误原因了,代码里有打错的字符,导致“{”和“}”不配对了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP