c++开发技术
schumyxp
如果你无所不能,那就来当一名程序员吧!
展开
-
建立socket崩溃的问题
前面文章提到的那个用c做的驱动,经常在建立socket的时候出错,而且一出错就是恐怕的崩溃退出。找了好些天原因,今天总算是找到根源了。崩溃的原因是在建立socket的时候,因为上一个socket出错了,所以调用了closesocket方法。但是这个closesocket执行的有些慢,慢到了我的新的socket正在建立的时候,它还没有执行完。于是冲突就来了,一个要建立,一个要关闭,于是崩溃就出现原创 2007-05-10 16:42:00 · 1882 阅读 · 0 评论 -
c++与C#在类的引用和声明上面的异同
比如我们有个类:class A{...}比较1:A a; //c#版本A *a;//c++版本c#下面,语句“A a;” 等价于c++下面的 A *a;本质上,都是声明了一个指向A的指针,但是指针的内容为空。(c++下面的指针内容不一定为空,具体内容可能是个任意值)如果这个时候就使用a的话,都会出错。错误的原因就是“未将对象的引用指向对象的实例”。比较2:A a = new A();原创 2008-06-11 13:27:00 · 958 阅读 · 0 评论 -
const也会变,我们还能相信谁?
在c++的世界里面,我们经常会见到一个方法的参数上面有个const修饰。通常的说法,也是这个const存在的目的,是为了防止传入的参数被意外改变。毕竟c++里面的指针太NB了,不防不行啊。只是,加了const就真的ok了吗?让咱们来试试看吧: 下面这样的方法声明是非常常见的。void TestConst(const char* str){ str[0] = a;}编译一原创 2008-08-29 14:31:00 · 647 阅读 · 4 评论 -
makefile例子文件已经提供下载
我把前面讲解过的那个makefile文件发布到CSDN的资源里面了,感兴趣的同志可以去下载。地址是: http://download.csdn.net/source/397617原创 2008-03-28 09:45:00 · 842 阅读 · 0 评论 -
makefile学习总结(修正版)
这几天好好研究了下makefile,然后做了一个自认为还算智能的makefile。用的时候,只要把它放在项目里面,只要配置一下需要的几个参数,然后就可以make了。以后无论怎么添加代码文件,都不用去动这个makefile了,嘿嘿。我先是研究了eclipse自动生成的makefile,然后在它的启发下,进行了改造,最终实现了自己的makefile。下面是我写的这个makefile,我会对它做原创 2008-03-27 16:09:00 · 1050 阅读 · 1 评论 -
stl库里面的list使用经历总结
最近要用到c++标准库里面的list,但是它又不是支持多线程的。所以我决定对其进行一下改造,变成支持多线程的。思路上面比较简单,模仿C#下面的模式,继承list,然后对用到的方法进行重载,加入lock,变成支持多线程的。实现的时候还是发现了很多问题,主要还是c++可怕的语法,搞了我好几天天。下面就总结一下。首先为了简便,我就不继承了。首先是类的声明:templateclass Sync原创 2008-03-20 11:40:00 · 1257 阅读 · 0 评论 -
服务器端的高性能实现(四)——框架结构的linux实现
突然被安排出差了一周,耽误了好些时间!在这一次,我来实现这个服务器端框架的linux版本。鉴于我在linux下面还比较菜,所以放弃了伟大的emacs,虽然我很崇拜这个终极武器。我选用了c++版本的eclipse,嘿嘿,惭愧惭愧啊。不臭贫了,开始正题。关于eclipse的配置什么的各种开发前的准备活动,我就不再多说了。首先,创建一个shared library,起名为原创 2008-02-25 15:50:00 · 879 阅读 · 0 评论 -
linux下面eclipse的c++配置
打算用linux下面的eclipse进行c++开发,因为好久没做c++开发了,又对linux没那么熟悉,就记录一下我的入门经历。目的是创建一个共享库,然后用另一个项目去调用。首先,创建一个共享库。打开eclipse,选择c++项目里面的共享库,创建即可,然后就是编写相应的代码什么的……比如这个库就叫做test吧,里面有个类,叫做CTest。写好之后,编译,保证没有问题。原创 2008-02-25 15:20:00 · 2517 阅读 · 0 评论 -
服务器端的高性能实现(一)——策划
这么快就过完新年了,又得上班了。新年了,干些什么呢?想做一个服务器端的服务,提供一个高效处理客户端响应的解决方案,锻炼和加强一下以前的技术。这个服务器端有如下需求:1、能支持多个客户端(似乎是废话);2、占用资源尽量低;3、效率尽量高;4、功能扩展方便其他需求:1、使用TCP协议2、在windows下用.net实现一套,同时在linux下用c++实现原创 2008-02-13 14:51:00 · 887 阅读 · 0 评论 -
经典的c++下面使用pthread_create问题的解决
在c++下面进行多线程开发,很自然的就遇到了这个pthread_create问题。出现问题的主要原因就是pthread_create的第3个参数——void*(void*)这个回调函数。在c++里面,对于普通成员函数的引用,会变成如下的形式:比如有类:class A{public void* foo(void* arg);}要用指针引用foo的话,需要这么做:原创 2008-02-01 15:35:00 · 4841 阅读 · 4 评论 -
终于搞定了boost库
经过头天晚上的编译后,boost库已经初具雏形了。像预期的那样,生成了一个bin.v2文件夹。然后使用安装命令:./bjam --toolset=gcc install再去查看/usr/local/include目录和/usr/include目录下面,boost已经乖乖的躺在那里了。接下来就是第一次激动人心的试用了。网上最多的就是那个lexical_cast了,就从它开原创 2008-02-01 11:37:00 · 816 阅读 · 0 评论 -
继续讨论win32下的多线程编程问题
用习惯了c#里面的lock,再来用win32下面的EnterCriticalSection,感觉不太习惯——其实就是不习惯得多打些字的,呵呵。无意中发现了一个叫做mtdll.h的头文件,里面竟然有lock和unlock。大喜!!用msdn搜了一把,没找到相关说明,奇怪哦!仔细看了看mtdll.h的说明,怪不得msdn里面没有它的影子呢,敢情人家写着呢——内部使用!!这么好的东西不拿原创 2007-05-17 11:49:00 · 1097 阅读 · 0 评论 -
一个很好的win32动态库的例子
1)在VC菜单中File->New新建一个命名为declspec的Win32 Dynamic-Link Library工程,下一步选择A simple DLL project。可以看到VC的AppWizard为我们准备了一个DllMain函数,本例中我们不用去改动它。 2)在declspec.cpp中添加如下代码: void __decls转载 2009-03-17 11:43:00 · 678 阅读 · 0 评论