Chinaunix首页 | 论坛 | 博客
  • 博客访问: 273560
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-20 14:44
文章分类

全部博文(124)

文章存档

2020年(1)

2018年(2)

2016年(2)

2015年(6)

2014年(10)

2013年(23)

2012年(7)

2011年(18)

2010年(15)

2009年(8)

2007年(8)

2006年(23)

2005年(1)

我的朋友

分类:

2006-01-09 20:17:08

1.赋值加判断同时进行时少了括号如下:
    程序本意是将socket(PF_INET,SOCK_STREAM,0)的返回结果赋给socketfd,并判断是不是大于0,本该写为 if((socketfd=socket(PF_INET,SOCK_STREAM,0))<0),由于少了括号(此处用中文括号表示),到是先判 断,再赋值.
    if(socketfd=socket(PF_INET,SOCK_STREAM,0)<0)

2.在c语言中用结构体定义变量是struct + 结构体名的.
而且需要没处都加.如果报错时,注意检查是不是没处都加了.特别是在同一行中的情况.
如:connect(socketfd,(struct sockaddr*)sock_addr,sizeof(sockaddr));//此处第二个没有加.仍会报错.多检查一下.少浪费时间.

3.if判断语句后面加了一个分号“;”
出现症状,if后面的语句在条件不成立时也被调用,而且在调试状态下,即使程序没有被优化,if语句也不被执行。
如:
    if(a==b);   //此处的分号是致命的。而且在if条件很长的情况下,更不容易被发现。
    {    
        printf("a==b\n");
    }
4.症状同上.且if后没有;
例如:
#define funcA(A)   assert(A!=NULL);func(A)

if(A!=NULL)
   funcA(A);

该宏被替换后为:
if(A!=NULL)
   assert(A!=NULL);
   func(A);

导致即使条件不成立,fcun(A)也会被调用.
解决方案:
#define funA(A) \
 do{\
    assert(A!=NULL);\
    func(A);\
  }while(0)
for,while,if都不能完成这样的功能.

5.将中括号写成小括号了。
 pthread_create(&tid_produce(i),NULL,produce,&count[i]);
中第一个参数是是数组的。误将中括号写成小括号了。
编译时报出如下错误。
prodcons2.c:59: called object is not a function,以前没有遇到过类似错误。实在无法定位。
 pthread_create(&tid_produce[i],NULL,produce,&count[i]);
阅读(1143) | 评论(0) | 转发(1) |
0

上一篇:vi 命令

下一篇:makefile

给主人留下些什么吧!~~