C/C++
文章平均质量分 61
stilling2006
个人觉得技术始终在变,唯有思想永恒。写下自己的专长之时,内心惴惴不安,毕竟本人技术实在是不怎么样,或许唯一可以骄傲的地方就是年轻吧,但这点脆弱的资本在时光中也逐渐消失。梦想:骑着骆驼,看落日长河,大漠孤烟。博客:http://beyondc.cn
展开
-
C++托管到底是什么
<br /> sink按:看了这篇文章后对托管有了个模糊的了解,觉得写得还算简单(看到那些很长的,脑袋就大了~),故转来分享给大家。原地址是:http://developer.51cto.com/art/201002/183362.htm<br /> C++编程语言从发展至今已经历经20年之久,我们在下面首先介绍了这一编程语言的基本概念以及构成。在大家了解完这些内容后,我们会进入近体那的主题,那就是为大家介绍什么事C++托管?<br /> C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而原创 2010-06-18 00:31:00 · 908 阅读 · 0 评论 -
金山的C++面试题
<br /> 在CSDN看到了几个金山C++的面试题,自己也做了下,感觉不错,记录如下:<br /> 1.在程序设计和运行中,有时候我们希望一个类有且只有一个实例,请用C++语言写一个这样的示例类。<br /> 我的见解:这就是一个C++单例模式的例子,具体可以参考我这篇文章“C++单件模式实现代码详解”<br /> 2. 请实现一个具有以下功能的函数,但不能使用任何形式条件判断、分支、跳转等类型的语句或指令:<br />int sign(INT32 x) {<br /> if (x原创 2010-07-16 19:57:00 · 2245 阅读 · 0 评论 -
c++0x
<br /> sink按:我这次给out了,之前在csdn上有个很火的帖子说0x的时候,我还以为是字符串以斜杠0结尾,所以没怎么看,现在发现竟然是c++的新标准,而且看到增加了许多不错的“基础设施”,真是不错~关于c++0x的内容百度Google有很多,我觉得这个比较通俗易懂,至少对于我这个还没真正接触它的人来说算是最直观的认识吧。~<br /> 最近,从全球最活跃的C++社区boost传来消息,新的C++标准:C++0x,最早将在2007年10月发布。很早就有人猜测,C++0x中的x到底原创 2010-07-16 19:56:00 · 834 阅读 · 0 评论 -
VS2005下配置OpenCV2.1
<br />大半个月前捣鼓了下OpenCV,那时做了个不错的小东西,然后学习了下里面的算法。这半个月来发生了许多事情,所以没有更新博客,现在开始重新更新,就从OpenCV的安装开始吧。<br />首先下载OpenCV-2.1.0-win32-vs2008文件,29.1mb的大小。<br />然后安装,一路默认就好了。<br />然后增加环境变量。例如我机器上的是C:/OpenCV2.1/bin,把它添加进PATH中。<br />接下来就是配置VS2005了。打开 Microsoft Visual Studi原创 2010-07-16 20:14:00 · 3254 阅读 · 0 评论 -
注册表reg文件语法规则
经常需要修改注册表项,但是一层一层打开注册表简直太麻烦了,Slyar又不想使用第三方工具来快速打开,因此直接编写注册表reg文件便成了Slyar修改注册表最常用的手段。1、第一行为以下内容Windows Registry Editor Version 5.002、第二行和最后一行均为空行3、新建项[路径/新主键名]4、删除项[-路径/主键名]5、新建键值 或 修改键值[路径]"键名"="键值" (针对字符串型键值)"键名"=hex:键值 (针对二进制型键值)"键名"=dword:键值 (针对DW转载 2010-07-14 08:47:00 · 1591 阅读 · 3 评论 -
一个简单的IOCP(IO完成端口)服务器/客户端类
文章来源:[url]http://www.codeproject.com/KB/IP/iocp_server_client.aspx[/url] 前言:源代码使用比较高级的IOCP技术,它能够有效的为多个客户端服务,利用IOCP编程API,它也提供了一些实际问题的解决办法,并且提供了一个简单的带回复的文件传输的客户端/服务器。 1.1 要求:l 文章要求读者熟悉C++, TCP/IP, 套接字(socket)编程, MFC, 和多线程。l 源代码使用Winsoc转载 2010-07-13 08:34:00 · 1209 阅读 · 0 评论 -
c++五种内存分配、堆与栈区别
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储区,全转载 2010-07-12 21:28:00 · 1148 阅读 · 2 评论 -
C++ 内存池 -- C++ Memory Pool
C++ 内存池l 下载示例工程 – 105Kbl 下载源代码 – 17.3Kb 目录l 引言l 它怎样工作l 示例l 使用这些代码l 好处l 关于代码l ToDol 历史 引言C/C++的内存分配(通过malloc或new)可能需要花费很多时。更糟糕的是,随着时间的流逝,内存(memory)将形成碎片,所以一个应用程序的运行会越来越慢当它运行了很长时间和/或执行了很多的内存分配(释放)操作的时候。特别是,你经常申请很小的一块内存,堆(heap)会变成碎片的。解决方案:你自己的内存池一个(可能的)解决转载 2010-07-12 20:41:00 · 2752 阅读 · 3 评论 -
多步OLE DB 操作产生错误
如果您在编程过程中遇见错误如下: 多步OLE DB 操作产生错误。如果可能,请检查每个OLE DB状态值 那么你可以往一下考虑: 1、原因很可能是你”select * from …”这句话,如果你数据库里这张表的字段很多的话可能就会产生OLE DB错误,你不妨从数据库中调用数据的时候用”select 用到的字段 from …”没用到字段最好不要放进去。 2、生成的字段和数据库对应字原创 2010-05-02 00:06:00 · 6845 阅读 · 1 评论 -
程序中注册dll
贴出一段很不错的代码,用c++来实现对于某些DLL或OCX文件的注册。就好比使用RegSvr32一样,不过我们不可能在部署程序到客户机的时候还让用户使用这个工具吧,呵呵,所以觉得这个代码很实用拉注释很清楚,不用多说啥了。//ActiveX控件的路径及文件名LPCTSTR pszDllName="IEEventHookPrj.dll";//装载ActiveX控件HINSTANCE hLib = Lo原创 2010-05-02 00:06:00 · 612 阅读 · 0 评论 -
MFC程序界面的XP风格
在CSDN论坛里发现一牛人的回帖如下。经验证确实可以,故拿来给大家分享,呵呵,常在江湖走,哪不遇高手,没想到还有这样的方法。并且里面的那个Microsoft.Windows.XXXX竟然都可以。总之,学习了。首先在RES目录下建一个文件,命名Master.manifest然后用记事本打开放入 name=”Microsoft.Windows.XXXX” processorArchi原创 2010-05-01 23:48:00 · 1010 阅读 · 0 评论 -
c++实现任意矩阵求逆
关于矩阵求逆记忆最深的就是在静宜大学参加程序比赛,这是遇见的第一个问题。刚才突然想到,于是又百度Google了一番,又有了下面这篇水文~ 矩阵的求逆按矩阵类型分2种,一种是方阵,一种就是任意的矩阵了。而求逆的过程,我们学过线数就知道,可以用行列变化,用伴随矩阵。两种思路的代码网上都有,这里贴出一部分c++写的代码,是针对任意矩阵的用伴随的方法(先求代数余子式)。完全的代码和矩阵类,等我会原创 2010-05-01 23:48:00 · 20244 阅读 · 5 评论 -
fread函数和fwrite函数
1.函数功能 用来读写一个数据块。2.一般调用形式 fread(buffer,size,count,fp); fwrite(buffer,size,count,fp);3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。 (2)size:要读写的字节数; (3)count:要进行读写原创 2010-05-02 00:03:00 · 660 阅读 · 1 评论 -
VS2005创建win32 dll的项目向导
<br />在VC++6.0的时候是直接有这个项目类型的,VS2005中也是支持的。你可以这样建立:<br /> 主菜单-》文件-》项目-》新建-》在弹出的对话框中展开Visual C++节点-》点击Win32节点-》在右面窗格选择Win32项目-》在弹出的向导对话框中选“应用程序配置”选项卡-》选中dll单选按钮-》完成<br /> 这样就可以了,实际上VS里重新进行了归类而已 。<br />超越C++原创文章,转载请注明来源并保留原文链接 <br />本文链接:http://原创 2010-07-16 19:58:00 · 692 阅读 · 0 评论 -
error C2440: ’static_cast’
<br />error C2440: “static_cast”: 无法从“void (__thiscall CChatDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”<br />1> 从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast<br />搜索发现为开发平台迁移问题。<br />由vc6.0升级至vs2005以上平台均会遇到这情况,原因为<br原创 2010-07-16 19:58:00 · 855 阅读 · 0 评论 -
VS2005创建win32 dll的项目向导
<br /> 在VC++6.0的时候是直接有这个项目类型的,VS2005中也是支持的。你可以这样建立:<br /> 主菜单-》文件-》项目-》新建-》在弹出的对话框中展开Visual C++节点-》点击Win32节点-》在右面窗格选择Win32项目-》在弹出的向导对话框中选“应用程序配置”选项卡-》选中dll单选按钮-》完成<br /> 这样就可以了,实际上VS里重新进行了归类而已 。<br />超越C++原创文章,转载请注明来源并保留原文链接 <br />本文链接:http://ww原创 2010-06-18 00:29:00 · 893 阅读 · 0 评论 -
金山的C++面试题
<br /> 在CSDN看到了几个金山C++的面试题,自己也做了下,感觉不错,记录如下:<br /> 1.在程序设计和运行中,有时候我们希望一个类有且只有一个实例,请用C++语言写一个这样的示例类。<br /> 我的见解:这就是一个C++单例模式的例子,具体可以参考我这篇文章“C++单件模式实现代码详解”<br /> 2. 请实现一个具有以下功能的函数,但不能使用任何形式条件判断、分支、跳转等类型的语句或指令:<br />int sign(INT32 x) {<br /> if (x原创 2010-06-18 00:27:00 · 1610 阅读 · 0 评论 -
C++单件模式实现代码详解
<br />在C++这样一款功能强大的计算机编程语言中,有很多比较复杂的功能,需要我们在不断的实践中去积累经验,理清这些功能的应用特点。在这里我们就先来了解一下C++单件模式的相关实现方式。<br />C++单件模式代码示例:<br />class Singleton { public: static Singleton * Instance() { if( 0== _instance) { _instance = new Singleton; } return _instance;原创 2010-06-18 00:26:00 · 870 阅读 · 0 评论 -
error C2440: ’static_cast’
<br />error C2440: “static_cast”: 无法从“void (__thiscall CChatDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”<br />1> 从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast<br />搜索发现为开发平台迁移问题。<br />由vc6.0升级至vs2005以上平台均会遇到这情况,原因为<br原创 2010-06-18 00:29:00 · 5788 阅读 · 6 评论 -
Ogre1.7.1在VS2005下的安装
<br />配置什么的,最讨厌了。真的很讨厌。之前的写过关于OpenCV配置的文章,具体可以看“VS2005下配置OpenCV2.1””。这次捣鼓Ogre又让我配置了好久好久。Ogre1.7.1的配置真让人蛋疼,网上也没有很完整和很贴切的配置过程,自己写出来算是帮助后来者吧。<br />我的环境:Windows XP,VS2005,Ogre1.7.1<br />1、 下载<br />VS80sp1-KB926604-X86-CHS<br />VS80sp1-KB971090-X86-INTL<b原创 2010-08-05 00:08:00 · 825 阅读 · 0 评论 -
从VC6迁移至VS2005
<br />最近开发平台由VC6.0升级至VS2005,需要将原有的项目迁移,特将碰到的问题归纳如下:<br />1消息映射<br />VS2005对消息的检查更为严格,以前在VC6下完全正常运行的消息映射在VS2005下编译不通过<br />a. ON_MESSAGE(message,OnMyMessage);<br />OnMyMessage返回值必须为LRESULT,其形式为:afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);如果不符合,则有错误提示:<b原创 2010-07-16 20:06:00 · 792 阅读 · 0 评论 -
cwnd、cdc、hwnd和hdc
<br />对于学习VC的朋友来说,这些东西很熟悉了吧?可是我自己还是有点犯糊涂,所以从百度到处搜搜,记载如下。<br />1.对象和句柄<br />CWnd是类, HWnd是句柄, CWnd封装了HWnd<br />AfxGetMainWnd()->m_hwnd;<br />同样的, CDC和HDC也是这样的关系:<br />CDC *pDC=new CDC;<br />HDC hdc;<br />pDC->GetSafeHdc();//通过对象获得句柄:<br />pDC->Attach(hdc); /原创 2010-07-16 20:04:00 · 1694 阅读 · 0 评论 -
OpenCV来控制鼠标移动
<br />之前的日志“VS2005下配置OpenCV2.1”里介绍了如何在VS2005里安装OpenCV2.1,下面这篇日志里就介绍了下如何使用CV来控制鼠标移动。代码和AutoCamShift例子里的差不多,只是我进行了许多代码的删减以及我添加稍许注释,另外就是补充了::SetCursorPos(_x,_y)函数。<br />不太多说废话,C++代码如下:view sourceprint?001#include "cv.h"002#include "highgui.h"003#include原创 2010-07-16 20:12:00 · 3994 阅读 · 0 评论 -
C++ 内存池
<br />今天在王广的影响下开始真正接触C++内存池了,看了一下午的下面这篇文章(真的觉得很赞~),自己算是基本看懂了也吸收了。本意想转载过来,发现格式变得很凌乱了,那就在这留个标记吧,现在时间最紧迫,专心加油去学习,而不在乎格式和流量。<br />C++ 内存池 — C++ Memory Pool <br />另外还有几篇也不错的C++内存池方面的文章,也贴在下面:<br />[学习C++]内存管理<br />c++五种内存分配、堆与栈区别<br />共同进步!~<br />超越C++原创文章,原创 2010-07-16 20:10:00 · 889 阅读 · 0 评论 -
C++文件读写操作
<br />这个很基础,但总是记不牢。<br />C++文件流:<br />fstream // 文件流<br />ifstream // 输入文件流<br />ofstream // 输出文件流<br />//创建一个文本文件并写入信息<br />//同向屏幕上输出信息一样将信息输出至文件<br />#include<iomanip.h><br />#include<fstream.h><br />void main()<br />{<br />ofstream原创 2010-07-16 20:10:00 · 904 阅读 · 0 评论 -
C++注册表操作
<br />写这篇日志以前不是没有接触过C++来操作注册表,但这次的体会更深入了一点,故笔记如下。<br />首先可以从“注册表reg文件语法规则”了解下.reg文件的语法规则,因为很多时候是把.reg里的代码转换为程序里的啊。<br />知道语法后,可以根据里面的代码开始逐个转化为C++代码了。<br />首先是创建HKey,调用RegCreateKey或RegCreateKeyEx函数。<br /> 函数定义:LONG RegCreateKeyEx(HKEY hKey,//已经打开的键的句柄原创 2010-07-16 20:07:00 · 951 阅读 · 0 评论 -
substring引发的编程细节
<br />大概是考研那几个月,自己笔记本都没打开过,所以那段时间上网都是用舍友的电脑,而他们都用360浏览器,然后我就养成了用360浏览器的习惯。结果呢,最近实在受不鸟那破浏览器了,换回了心爱的FF,刚用上的时候进自己blog,发现了一些问题。就是首页对于每篇文章的摘要地方会出现一个乱码符号(有的文章没有,有的有,原因下面会说)<br /> 动动脚趾头就知道是substring函数的原因,这个函数在c++(substr),php,java里都有,而试想如果你使用substring($stri原创 2010-07-16 20:05:00 · 733 阅读 · 0 评论 -
做程序员最难的是什么?
转自学长的校内网日志。这篇日志很有意思的说明了调试的重要,尤其是现在越来越提倡的驱动测试开发。 做程序员最难的是:调bug 比这个还难的是:release过了的bug 比这个还难的是:release过了的逻辑bug 比这个还难的是:不是自己写的release过了的逻辑bug 比这个还难的是:不是自己写的不能debug的release过了的逻辑bug 比这个还难的是:不是自己写的原创 2010-04-02 12:52:00 · 1815 阅读 · 0 评论 -
stdafx文件
每次新建一个Visual C++的工程,总是会有这么一个文件,许多次编码过程中,它也折腾了我很多很多次。因为乱七八糟的也写过好几个程序了,对它有个粗略的大概的了解,但没有系统的去了解过它,所以特意Google了下,呵呵。 名称的英文全称为:Standard Application Fram Extend 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Wi原创 2010-02-22 18:58:00 · 780 阅读 · 0 评论 -
多步OLE DB 操作产生错误
如果您在编程过程中遇见错误如下: 多步OLE DB 操作产生错误。如果可能,请检查每个OLE DB状态值 那么你可以往一下考虑: 1、原因很可能是你”select * from …”这句话,如果你数据库里这张表的字段很多的话可能就会产生OLE DB错误,你不妨从数据库中调用数据的时候用”select 用到的字段 from …”没用到字段最好不要放进去。 2、生成的字段和数据库对应字段长度原创 2010-02-14 10:33:00 · 1586 阅读 · 0 评论 -
VC2005简单配置SDL环境
当老师第一节课说完这学期只教2D游戏相关知识我就重新定位了这门课程。混。同样给我定义为混的还有周一的资讯安全概论。但我混也是混得有原则的,作业还是自己做。 想到自己摆弄了GL一些日子了,SDL应该算是手到擒来了。首先下载SDL的相关开发库(包含H文件许53个,LIB文件6个,DLL文件14个)。进入对应的vc2005的安装目录。在路径vc/inlucde下新建SDL文件夹,拷贝头文原创 2009-03-30 01:50:00 · 1644 阅读 · 0 评论 -
C/C++关键字static,const,inline,define,typedef
一 static1) 产生背景引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现?最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不转载 2009-03-27 00:53:00 · 2948 阅读 · 0 评论 -
虚函数与纯虚函数
1. 虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。 2. 虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base原创 2009-02-20 23:35:00 · 547 阅读 · 0 评论 -
c#与c++共同编译
今天解决了同一台机器上既可以编译c#又可以编译c++项目的问题了。以前自己是安装了vc6.0来运行c++的项目,用vs2005来运行c#。但是这样的方法实在不是长久之计。 首先各位在安装好vs2005后,第一次进入的时候都会需要你要选择自己的编程环境。但是无论你选择了c#或者是c++,你都得舍弃另外一种,毕竟两者的编译环境还是有所不同的。 后来自己发现两者是可以转换的。在菜单栏目里的“工具”--原创 2009-01-31 04:28:00 · 1501 阅读 · 0 评论 -
c++里的#ifndef,#define以及那#endif
虽然一直都知道这三个东西的作用: 头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifnd原创 2009-01-30 21:33:00 · 830 阅读 · 0 评论 -
API--RegQueryValueEx的说明
RegQueryValueEx找回所打开注册表键所关联的一个给定值的类型和数据。 参数hKey 一个当前已打开键的句柄或下列已确定的保留句柄值:HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERSWindows NT: HKEY_PERFORMANCE_DATA Window原创 2009-01-31 03:48:00 · 1057 阅读 · 0 评论 -
cpp和c的区别
这几天在练习数据结构等知识的时候,有时遇见文件保存为c后缀则能编译通过,有时又是保存cpp后缀才能通过。对于这个都没能区分清,是自己的基本功问题,于是百度了一下。幸好有许多和我一样有问题的人。 其实简单来说,cpp就是编译c++文件,支持c++语法,而c就是编译c语言文件,支持c语言。2者的区别就在于语法和编译时的确别吧。 当然,对于类的引用和某些函数都是应该区别对待的。具体原创 2009-01-31 03:58:00 · 5259 阅读 · 1 评论 -
关于Debug和Release之本质区别
觉得不错,转来保存。本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序--------------------------------------关于Debug和Release之本质区别的讨论一、Debug 和 Release 编译方式的本质区别Debug 通常称为转载 2008-09-09 18:53:00 · 622 阅读 · 0 评论 -
Microsoft Agent动画精灵人物解析
Microsoft Agent是一种基于微软视窗平台的可编程的即时交互性动画角色。开发人员能够用该角色作为助手介绍,向导,娱乐或作为一种加强网站及应用程序交互性开发的手段。 Microsoft Agent能使程序员和网站开发者设计出更加人性化的用户交互界面。除了可以接受键盘和鼠标的输入外, Microsoft Agent还可以听懂用户的语音命令,动画角色会根椐用户的准标语音命令通过同步语音,录音或原创 2007-10-30 17:37:00 · 1704 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理
1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Generate debug info复选框。注:只是一个介乎Debug和Rel原创 2007-10-28 16:14:00 · 675 阅读 · 0 评论