c/c++软件开发的注意事项
第一部分软件编程的时间分配概况
高效率的程序员并不是敲键盘的速度比别人快,而是他有着良好的编程习惯,节省了别人浪费的时间。因此,要想提高自己的编程效率,根本在于怎么少浪费时间。只要能把别人浪费的时间节省下来,你的效率就可以快过别人,甚至数倍于别人。要想节省时间,当然首先需要明白编程中耗费时间的分配情况。
程序员软件开发的几个阶段:
1、分析设计,
分析设计的前提是充分理解需求说明文档,然后分析如何实现它们,并形成设计文档。分析设计的目的是明晰软件架构,软件算法和功能的逻辑,得出必要的设计文档,奠定后面编码的基础。合理的设计可以节省后面编码的时间,不合理甚至错误的设计将导致工作的重新开始,没有设计贸然开始编程会导致一些难以预见的逻辑错误。总之,较好的设计事半功倍。
2、程序编码
依照语法、设计文档编码。
3、程序测试
测试的目的是检测程序有没有问题,一旦发现问题,问题的定位越准,效率就越高。因此,程序中需要输出必要的提示信息。
4、软件调试
测试时发现程序有BUG,自然需要调试。显然,遇到的问题越少,调试的时间就越少。没有什么比一次性写好,不用调试更快的方法了。
时间虽然无法具体分配到各个阶段,但是第一和第二阶段的质量决定了后面两阶段的时间花费,质量越高,测试和调试时间花费越少。反过来,质量越差,测试和调试时间越长。
第二部分 c/c++中常见的错误
软件编程的过程中,程序员所犯的并不一定是重大错误,反而一些常见的错误屡见不鲜。这些错误严重影响到编程中测试和调试的时间。这一部分总结一下,时时提醒自己,告诫自己避免这些错误。
常见的错误有:
1、内存泄露
在c/c++中,内存管理器不会帮助你自动回收不再使用的内存,不管在什么情况下,采取谨慎的态度,杜绝内存泄露的出现,都是上策。尽管一些工具可以帮助我们检查内存泄露问题,但是编程时还是应该仔细一点,尽早排除这类错误,工具只是用作验证的手段。
2、内存越界访问
1)读越界,即读了不属于自己的数据,如果所读的内存地址是无效的,程度立刻就崩溃了。如果所读内存地址是有效的,虽然读的时候不会出问题,但由于读到的数据是随机的,它会产生不可预料的后果。
2)写越界,也叫缓冲区溢出
相关文档:
前几天写了关于Keil与C/C++混合编程的若干问题,今天写的是继续前面的。
在使用C/C++混合编程的时候,程序运行到类里面的虚拟函数时死掉,查看其vptr值为0x00000000,这时候不知道怎么解决,后来自己编了一个实例程序可以通过,发现vptr的值是在__main里面的& ......
指针是C的灵魂,正是指针使得C存在了这么多年,而且将长期存在下去。事实上,我自己不用C语言写程序已经有一年了,工作中接触到的只有java,python和javascript.最近用C完成了一下类似于OO中的封装(即"类")的概念,顺便把指针复习了下,感觉有必要记一下。
本文中的例子有这样两个概念:任务(Task) ......
这种需求很多,又因为C++和C是两种完全不同的编译链接处理方式,所以要稍加处理.总结大致有两大类实现方法.
文中给出的是完整的,具体的,但又最基本最简单的实现,至于理论性的东西在网上很容易搜索的到.
一.通过处理被调用的C头文件
a.h:
#ifndef __A_H
#define __A_H
#ifdef __cplusplus
extern "C" {
#endif
int Th ......
编译:C程序直接编译成标准的二进制可执行的代码,但C#的源程序并不是被编译成二进制可执行的形式,而是一种中间语言(MSIL),类似JAVA中的字节码
结构体:C#的结构体与C++的结构体相似。但是C#的结构体与类是不同的,而且不支持继承。
预编译:C#中存在预编译的指令支持条件编译,警告,错误报告和编译行控制。其指令 ......
一 产生 运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供。 C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。 C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出 ......