易截截图软件、单文件、免安装、纯绿色、仅160KB

关于《0 bug C/C++商用工程之道》的一点说明

我这两天在CSDN论坛开了一个散分贴,想宣传一下我的书。大多数朋友还是很友好的,对我的支持和鼓励很多,我也很感激。
网址在这里:http://topic.csdn.net/u/20091216/22/5a6594be-21e6-459e-ab41-57755273f465.html
当然,也有朋友认为肖某人吹牛,说0bug不可能,并且隐隐有PK的意思,我呢没办法,写了个说明。
这里想了一下,也在这里share出来,大家看看,如果觉得肖某人有诚意呢,给个好,诚意还不够呢,继续探讨。
呵呵,还是那句话,一家之言,欢迎拍砖哈。
原文就不摘录了,太长,这个问题的起源呢,是我书目录中有个提法,建议不要用do...while()语句,因为有潜在的bug风险,当然,一部分朋友就此开始论战,举出各种例子来证明肖某人胡说,甚至还设置一些程序陷阱,来故意制作bug,以证明不用do...while()语句,就不可以写出程序。
最后没办法,我回了个长文,这里贴给大家看。
嗯,刚才哄娃睡觉呢,没空想问题。
现在想了一下,我发现我被你绕进去了。
do...while()是典型的循环语句,被你用作宏包容器了。
嗯,我的无错化程序设计原则里面有一条,严禁一语多义。
这个呢,有两层意思:
1、不要在同一行写太多代码。阅读的人无法理解。
2、不要故意耍技巧,把A含义的语句故意写成B含义。
无错化的含义,主要就是写人阅读无障碍的程序,好的程序,从易读开始。
因此,do...while()用作宏包容器本身,不会在我的程序里面出现的。我会回避这种写法。
一语多义,由于给阅读者误导太过于严重,一般严禁这种书写方法。这是减少程序bug的关键。
因此,不管你怎么举例子,我只能说,我会按照我的方法写程序。
C语言太灵活,用法太多,不约束一下,确实不好控制bug。
很多时候程序bug,是由于程序员理解有误造成的。在公司里面,我们的代码通常写完后,还有后续的其他维护者,因此,一般说来应该写易读的程序,才会减少bug的。
也许以前很多前辈的代码,用到了很多C的花样和技巧,也能编译通过,也对。
但是,我想我不会用。因为我怕bug。
因此,这里我说句话,请各位坛友了解一下:
我书里面介绍了我的一些实战方法,来减少bug,但这并不绝对。
首先,这不是唯一正解,大家完全可以自行寻找自己的正解,想偷点懒,省点事呢,直接看我的书也可以。不看也无所谓,并不是说,离了我的书就写不出程序的。
其次呢,C和C++语言灵活性太大,一种算法,可以说有一万种写法,我的原则很简单,每种解法,只要一套方


相关文档:

一个Linux下C线程池的实现

from:邹鑫的专栏
    什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。
  &n ......

c程序设计语言官方题解版勘误1

#include <stdio.h>
#define MAXHIST 15
#define MAXWORD 11
#define IN  1
#define OUT  0
//打印输入中单词长度的水平方向直方图,
void main()
{
 int c, i, nc, state;
 int len;     //length of each bar
 int maxvalue;  &n ......

汇编看c之一,简单函数调用

简单的函数调用,通过简单的函数调用反汇编可以清楚了解如下
1.栈到底是什么,如何操纵栈的?
2.参数和临时变量是以什么形式在哪存放?
3.如何传递返回值?
举例:
#include <stdio.h>
int add(int a,int b)
{
     int c=0;
     c=a+b;
     ......

从bmp转换工具生成的c文件中获得bitmap图像输出

在函数体中添加以下代码:注:memcpy中的bitmap为bmp生成的c文件数组名
 int width = 533;
  int height = 615;  
  BYTE* DDBdata=new BYTE[width*height*2];
  BYTE* DIBdata;
  memcpy(DDBdata,(void *)bitmap,width*height*2);
  
   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号