
C/C++/C#
svnLight
这个作者很懒,什么都没留下…
展开
-
慎用重叠I/O
在读写具有FILE_FLAG_OVERLAPPED属性的File时,一般不用等ERROR_IO_PENDING错误的操作进行完,就可以释放该File资源,并退出进程。这在普通的高层应用编程时没有任何问题。然而在对驱动程序(如USB设备驱动,底层串口驱动)进行高层应用编程时就不能这样做,这样的结果是进程在退出时系统将蓝屏。这种情况下,必须首先用CancelIo()取消所有未决的IO操作。原创 2009-03-11 13:05:00 · 872 阅读 · 0 评论 -
Klocwork基于命令行的测试
实现klocwork测试的脚本命令如下表所示。表 实现命令行测试的脚本命令测试步骤目标对dsp/vcproj工程进行测试的命令1删除已存在的K8工程Kwadmin delete-project 2创建新的K8工程Kwadmin create-project原创 2009-03-29 17:40:00 · 2884 阅读 · 0 评论 -
《C Traps and Pitfalls》 中译本勘误
1. 127页,最后一段 原文: 这样,如果允许嵌套注释,上面的表达式就等效于“*/”;如果不允许,那么就等效于"/*"。 应该为: 这样,如果不允许嵌套注释,上面的表达式就等效于“*/”;如果允许,那么就等效于"/*"。 可以将127页的测试例子和128页的测试例子,在一个C++工程里测试一下便知,估计是原始版本原创 2009-03-31 19:56:00 · 933 阅读 · 0 评论 -
MinGW-5.1.4完整安装包
这段时间,准备在GCC编译器下做点东西,熟悉一下GNU的开发工具,所以摸索了一下MinGW-5.1.4的安装,在线安装太难了,老是断线,下载的压缩包大多不能用。 于是,查找优快云找到了几位网友的MinGW-5.1.4安装包,最好的安装包也安装不了所有的语言编译器,于是决定把这个事儿做了。里面打包了MinGW-5.1.4完全安装所需要的全部组件,C++、Fortran、Ada、Jav原创 2009-04-11 14:50:00 · 9165 阅读 · 28 评论 -
为什么要用exit()进行错误处理?
我们知道通常函数的返回用return,程序的结束用exit。对于main函数来说return和exit是等价的。在程序的业务和通信流程中,需要处理大量的异常和错误情景,处理完成后,就调用return返回上一级调用。可是最近我在审查某项目的VC6源代码时,发现一个奇怪的现象,错误处理代码中大量使用exit返回上一级调用,这些C/c++工程包括DLL工程、exe工程和一些后台服务性进程的工程。原创 2009-05-07 22:28:00 · 1345 阅读 · 0 评论 -
Klocwork扩展规则KAST Checker的定制一例
目的:检查代码中case语句后面没有跟break的情况。 我是用Klocwork 8.2环境做的KAST表达式测试。 由于KAST中case与break属于同样的层级,因此需要考虑没有break的各种情况。 我这里定制了两条规则,可以识别下面两种情况。 第一条:前一个case语句有执行体,但没有break,就直接进入下一个case或default了。 //S原创 2009-08-12 13:06:00 · 2113 阅读 · 1 评论 -
Klocwork对folder进行源代码分析
Klocwork对folder进行源代码分析,有以下几个方面的事情需要注意。 第一: 对folder进行分析时,其默认编译器由kwcc_config.xml指定。 这需要由先安装C/C++/Java编译器再安装Klocwork来保证。 第二: 对folder进行分析时,K8.1以前的版本才能对C/C++目录进行分析,所用klocwork不能太新;但对Java原创 2009-06-11 22:10:00 · 1797 阅读 · 0 评论