摘要: 最近由于要用zip解压缩,网上找了,没看到满意的源码,于是自己写了一个。亲测可用接口很简单,看代码吧。有问题的地方欢迎留言指正zlib_wrapper.h:#ifndef ZLIB_WRAPPER#define ZLIB_WRAPPER#include <vector>#include "zlib.h"//把一个字节流用zip算法压缩,压缩结果存放在result_buffer里面//src_buffer: [IN]输入buffer的起始地址//src_len: [IN]输入buffer长度//result_buffer:[OUT]存放压缩结果//返回值:true 阅读全文
posted @ 2012-12-21 19:02 kcy-666 阅读(4175) 评论(0) 推荐(0) 编辑
摘要: 1. 下载源文件,因为要用到头文件。当然你也可以用来自己编译生成dllhttp://www.sqlite.org/download.html2.下载dll3.解压dll并生成lib文件4.把生成的lib和下载到的dll加进你的工程,编译,此时不出意外应该会报链接错误5.问题解决:首先用depends工具查看dll里面到到处函数注意到了吗?dll里面是C导出方式,没有名字重组。但是看上面链接错误,明显是因为调用约定的不同导致的(前者是标准C调用约定,后者是__stdcall下的C调用约定,这个从名字重组的方式可以看到)。于是我在工程配置里面修改调用约定为__cdecl,问题解决 阅读全文
posted @ 2012-09-04 21:08 kcy-666 阅读(2014) 评论(2) 推荐(2) 编辑
摘要: void swap(int &x,int &y) { x = x + y; y = x - y; x = x - y; }当x,y相加的结果超过int的最大范围,则会有溢出 阅读全文
posted @ 2012-08-14 22:33 kcy-666 阅读(464) 评论(1) 推荐(0) 编辑
摘要: 这两天连续犯了两个很低级的错误,这里记下来: 把一个老版本的客户端给测试人员,但是服务端已经是新的了,所以结果一直出错。。。原因是给他客户端的时候忘记编译修改好的代码了 2. 编译release版本的时候,这里选择错了 好,谢谢大家! 阅读全文
posted @ 2012-08-08 14:51 kcy-666 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 对于上面的函数,如果这么调用: 这里把两个short型变量强制转换成int&引用,导致了一个极为隐蔽的BUG: m_nUdpPort被当成一个4字节的变量来对待,但是它本身是两个字节的,所以以m_nUdpPort变量的值在被修改时,相邻的两个字节也被修改了,而这相邻的两个字节极有可能是另外一个成员变量的值,所以这个值极有可能在不知情的情况下被修改,导致难以发现的BUG 阅读全文
posted @ 2012-08-03 21:51 kcy-666 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 这是第二次写关于__int64的文章了,问题与上次类似,出现问题的原因也一样。不过让我找了几天的BUG总得记下来!先上一段测试代码:int _tmain(int argc, _TCHAR* argv[]){ __int64 i64 = -sizeof(int); __int64 j64 = -4; cout << "i64 = " << i64 << endl; cout << "j64 = " << j64 << endl; int i4 = -sizeof(int); int j 阅读全文
posted @ 2012-05-17 14:25 kcy-666 阅读(1840) 评论(0) 推荐(0) 编辑
摘要: 今天使用source insight查看代码,不小心删除了Base项目,导致c标准库符号、mfc中的符号不能被识别。于是自己新建了一个Base项目,发现不能被别的项目所公用。最后在SI的帮助文档里面找到了解决方法。 这里的path跟Path路径的概念几乎一样,都是在当前项目中找不到符号的时候最后查找的地方。 更详细的内容请看SI帮助:http://www.sourceinsight.com/docs35/af914622.htm 阅读全文
posted @ 2012-05-13 18:46 kcy-666 阅读(5485) 评论(1) 推荐(0) 编辑
摘要: 下面的类完成在编译时检查类型T是否可以转化成类型U:template <class T, class U>class Conversion{public: enum { /*这里很巧妙:MakeT()返回一个T类型,此时如果T可以转化成U,那么会调用static Small Test(U);返回一个Small类型,从而exists会在编译期间就被确定成1;如果T不能转化成U,则会调用s... 阅读全文
posted @ 2012-05-04 19:48 kcy-666 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 上代码: int _tmain(int argc, _TCHAR* argv[]){ int i = 0; int j = ++i; int k = i++; return 0;}汇编代码:int _tmain(int argc, _TCHAR* argv[]){ push ebp ;保护栈指针,以便函数结束以后恢复调用者的栈状态 mov ebp,e... 阅读全文
posted @ 2012-05-04 19:24 kcy-666 阅读(1614) 评论(0) 推荐(0) 编辑
摘要: 今天使用公司代码的日志模块记录程序运行的相关信息,发现日志总是只有两条记录,即程序启动和结束,别的都没有。跟踪了很久,终于发现是日志输出模块被我修改了一个地方:把fopen改成了fopen_s,毕竟报了warning。但是这也是问题的根源! 下面的说明来自于msdn: Files opened by fopen_s and _wfopen_s are not sharable. If you ... 阅读全文
posted @ 2012-04-20 19:21 kcy-666 阅读(10153) 评论(0) 推荐(1) 编辑