免费注册 查看新帖 |

Chinaunix

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

我的编程习惯 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-01 16:15 |只看该作者 |倒序浏览
以下是我的编程风格,希望大家多多指教

  1. /******************************************************************
  2. *        Desc                :        信号量操作函数
  3. *        Author        :       
  4. *        Date                :        05/30/2003
  5. *       
  6. *****************************************************************/

  7. #include <stdio.h>;
  8. #include <stdlib.h>;
  9. #include <errno.h>;

  10. #include <sys/sem.h>;
  11. #include <sys/signal.h>;
  12. #include <sys/wait.h>;

  13. union semun {
  14.    int val;
  15.    struct semid_ds *buf;
  16.    ushort *array;
  17. } arg;

  18. struct sembuf Post= {
  19.    0, 1, 0
  20. };

  21. struct sembuf Wait= {
  22.    0, -1, 0
  23. };


  24. /******************************************************************
  25. *        Function        :        semWait
  26. *        Desc                :        等待信号
  27. *        Para                :        semid - 信号ID
  28. *        Return        :        -1        - fail
  29. *                                0        - sucess
  30. *
  31. *        Author        :       
  32. *        Date                :        05/30/2003
  33. *       
  34. *****************************************************************/
  35. semWait(int semid)
  36. {
  37.         while (semop(semid, &Wait, 1)) {
  38.                 if (errno == EINTR) {
  39.                         _Sleep(1);
  40.                 }
  41.                 else {
  42.                         perror("semop");
  43.                         return(-1);
  44.                 }
  45.         }
  46.         return(0);
  47. }

  48. /******************************************************************
  49. *        Function        :        semPost
  50. *        Desc                :        释放信号
  51. *        Para                :        semid - 信号ID
  52. *        Return        :        -1        - fail
  53. *                                0        - sucess
  54. *
  55. *        Author        :       
  56. *        Date                :        05/30/2003
  57. *       
  58. *****************************************************************/
  59. semPost(int semid)
  60. {
  61.         if (semop(semid, &Post, 1)) {
  62.                 perror("semop");
  63.                 return(-1);
  64.         }
  65.         return(0);
  66. }

  67. /******************************************************************
  68. *        Function        :        semInit
  69. *        Desc                :        初始信号
  70. *        Para                :        semKey - 信号关键字
  71. *                                val           - 信号量初始值
  72. *        Return        :        -1        - fail
  73. *                                >;0        - sucess
  74. *
  75. *        Author        :       
  76. *        Date                :        05/30/2003
  77. *       
  78. *****************************************************************/
  79. semInit(key_t semKey, int val)
  80. {
  81.         int semid;

  82.         if ((semid = semget((key_t)semKey, 1, 0755|IPC_CREAT|IPC_EXCL))<0) {
  83.                 if (errno ==  EEXIST) {
  84.                         if ((semid = semget(SEM_KEY, 1, 0755))<0)
  85.                                 return(-1);
  86.                 }
  87.         }

  88.         arg.val = val;

  89.         if ((semctl(semid, 0, SETVAL, arg))<0) {
  90.                 perror("semctl");
  91.                 return(-1);
  92.         }

  93.         return(semid);
  94. }

  95. /******************************************************************
  96. *        Function        :        semGetVal
  97. *        Desc                :        得到信号量值
  98. *        Para                :        semid        - 信号ID
  99. *        Return        :        -1        - fail
  100. *                                ?        - sucess
  101. *
  102. *        Author        :       
  103. *        Date                :        05/30/2003
  104. *       
  105. *****************************************************************/
  106. int semGetVal(int semid)
  107. {
  108.         int semNum;

  109.         if ((semNum=semctl(semid, 0, GETVAL, 0)) < 0) {
  110.                 perror("semctl");
  111.                 return(-1);
  112.         }

  113.         return(semNum);
  114. }

  115. /******************************************************************
  116. *        Function        :        _Sleep()
  117. *        Desc                :        sleep 0-指定时间
  118. *        Para                :        t        - 想要sleep的最大时间
  119. *        Return        :       
  120. *
  121. *        Author        :       
  122. *        Date                :        05/30/2003
  123. *       
  124. *****************************************************************/
  125. _Sleep(int t)
  126. {
  127.         int num = 1+(int)((double)t*rand()/(RAND_MAX+1.0));
  128.         sleep(num);
  129. }


复制代码

论坛徽章:
0
2 [报告]
发表于 2003-06-01 16:29 |只看该作者

我的编程习惯

编程中主要的就是
1 代码风格,你的代码命名方式是什么,
2  注解,一般磊的函数内在重要地方加点注解
3  函数内有没有需要特别注意的地方,如在里面分配内存,但要外面释放
如果有,那么在函数注解中写出

论坛徽章:
0
3 [报告]
发表于 2003-06-01 16:30 |只看该作者

我的编程习惯

现在我就觉得这些比较重要了

论坛徽章:
0
4 [报告]
发表于 2003-06-01 17:23 |只看该作者

我的编程习惯

个人观点:由名知意的包装函式没必要加这么多说明。不过你也说了,是你的风格。

论坛徽章:
0
5 [报告]
发表于 2003-06-02 14:42 |只看该作者

我的编程习惯

有必要。我觉得函数尽量精简。变量要尽量见名知意。缩近控制也很重要。

但是我现在没作到啊。怎么办!

论坛徽章:
0
6 [报告]
发表于 2003-06-02 15:10 |只看该作者

我的编程习惯

但是我现在没作到啊。怎么办!


以后注意好了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP