免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 以其昏昏,使人昭昭? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2013-06-09 13:42 |显示全部楼层
在main函数中,在执行的最后设置一个“return 0;”语句。当主函数正常结束时,得到的函数值为0,当执行main函数过程中出现异常或错误时,函数值为一个非0的整数。

评:写了“return 0;”居然还可能得到“一个非0的整数”?太神奇了吧


人家说了return 0放最后,正常结束才得到0,如果是执行过程中出错就是一个非0,这描述毫无问题啊。这文档不敢恭维。

论坛徽章:
0
2 [报告]
发表于 2013-06-13 10:56 |显示全部楼层
本帖最后由 rosettasky 于 2013-06-13 13:36 编辑

回复 3825# pmerofc

  1. int main(int argc, char *argv[])
  2. {
  3.     int i = 0;

  4.     {
  5.         ......
  6.         //省略号做某种操作,如果出错i = 1或其它非0值;
  7.     }

  8.     if(i)
  9.         return -1;

  10.     return 0;
  11. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-06-13 19:23 |显示全部楼层
lin5161678 发表于 2013-06-13 15:00
回复 3826# rosettasky

原书 可没有你的

那你理解这句话吗?不要略过它好吗?作者可是有说的。

“当执行main函数过程中出现异常或错误时”

论坛徽章:
0
4 [报告]
发表于 2013-06-14 07:49 |显示全部楼层
pmerofc 发表于 2013-06-13 19:26
回复 3826# rosettasky

你这种情况应该不算


但是这两句是有关系的,后面的是对前面的解释,我读的时候并没有歧义。 我没有读过谭的书,但既然您把这两句放一起,我觉得是这样的……


在main函数中,在执行的最后设置一个“return 0;”语句。当主函数正常结束时,得到的函数值为0,当执行main函数过程中出现异常或错误时,函数值为一个非0的整数。

论坛徽章:
0
5 [报告]
发表于 2013-09-13 09:46 |显示全部楼层
本帖最后由 rosettasky 于 2013-09-13 09:47 编辑

楼主你好,能帮我解决一个问题吧,找了好久了。


ARM平台。
以下代码中    ctx->blobs[0] = blob; 结构体blob的值无法正确赋值给ctx->blobs[0]。
结构体作为函数参数时传值的,那应该没有任何问题。更奇怪的是我在asn1_init函数里加了那条printf,就可以神奇的变好。
为什么会这样呢?谢谢。
  1. void asn1_init(asn1_ctx_t * ctx, chunk_t blob, u_int level0, int implicit, u_int cond)
  2. {
  3. //printf("in fuc:%s, blob->len:%d\n", __func__, blob.len);
  4.         ctx->blobs[0] = blob;
  5.         ctx->level0 = level0;
  6.         ctx->implicit = implicit;
  7.         ctx->cond = cond;
  8.         memset(ctx->loopAddr, '\0', sizeof(ctx->loopAddr));
  9. }
  10. struct chunk {
  11.         unsigned char *ptr;
  12.         unsigned int  len;
  13. };

  14. typedef struct chunk chunk_t;

  15. #define ASN1_MAX_LEVEL  10


  16. typedef struct {
  17.         int implicit;
  18.         u_int cond;
  19.         u_int level0;
  20.         u_int loopAddr[ASN1_MAX_LEVEL + 1];
  21.         chunk_t blobs[ASN1_MAX_LEVEL + 2];
  22. } asn1_ctx_t;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP