
C/C++
文章平均质量分 69
Road2010
这个作者很懒,什么都没留下…
展开
-
CFile::Read()
unsigned int nReadByte = 0;unsigned int nTotalReadByte = 0;for(;;){nReadByte = DataFile.Read(m_szOriginalData+nTotalReadByte,32768);if(nReadByte break;elsenTotalReadByte += nReadByte;转载 2013-06-08 15:04:10 · 15725 阅读 · 1 评论 -
DLL 的编写,导出函数
//在编程c++dll时 extern "C"和.def的作用 extern "c"是c++编译器在编译函数时以c编译器的方式处理函数名 而.def的作用也是告知编译器以.def导出的文件名的方式编译函数名动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。(1) 显式调用:使用LoadLibrayr载入动态链接库、使用GetProcAddress获转载 2014-03-25 17:21:35 · 929 阅读 · 0 评论 -
动态调用DLL记录
C/C++ code //DLL声明详细://DLL工程由VC6的向导选“Regular DLL using shared MFC DLL”生成extern"C" __declspec(dllexport) long Show2(long n){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString strShow; str转载 2014-03-25 17:17:00 · 802 阅读 · 0 评论 -
关于VC预定义常量_WIN32,WIN32,_WIN64
VC2012 下写 Windows 时,有时需要判断编译环境。在之前的文章《判断程序是否运行在 Windows x64 系统下。》里说过如何在运行期间判断系统环境,但在编译时如何判断? MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。 在 Win32 配置下,WIN32 在“项转载 2014-03-26 14:39:51 · 912 阅读 · 0 评论 -
ActiveMQ-CPP编译
首先列出要下载的东东:1、ActiveMQ-CPP(3.1.2):http://activemq.apache.org/cms/2、cppunit(1.12.1):http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page3、apr(apr, apr-util, apr-iconv 这三个都要下载):h转载 2014-05-10 18:12:54 · 1321 阅读 · 0 评论 -
vc6.0 调用ocx控件
1. ActiveX控件简介 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个原创 2014-04-26 09:36:38 · 19124 阅读 · 1 评论 -
C++字符串的处理
折半查找--递归与非递归 提高班--字符串全搞定,好C++字符串的处理-----全部用库函数,效率高 2012-08-20 17:21:46| 分类: 经典算法--信息学 | 标签: |举报 |字号大中小 订阅string定义:a) string s; //生成一个空字符串sstring a="eholl转载 2014-05-19 18:09:37 · 973 阅读 · 0 评论 -
c++格式化字符串
选自《优快云 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buf转载 2014-06-07 10:12:20 · 1232 阅读 · 0 评论 -
C++中event事件
CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJECT可以是EVENT,也可以是其它内核对象。 当你创建一个转载 2014-05-26 18:32:52 · 1363 阅读 · 0 评论 -
C++之字节对齐与结构体大小
说明:结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,一、解释现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规转载 2014-06-30 21:29:15 · 899 阅读 · 0 评论 -
在文本文件中输出宽中文字符
_tsetlocale(LC_ALL, _T("chs")); m_pFile=_tfopen(szFilePath,_T("wt")); _tsetlocale(LC_ALL, _T("c"));原创 2014-07-04 11:31:14 · 884 阅读 · 0 评论 -
调试Release版本应用程序
引言如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1:经常转载 2014-07-08 08:22:15 · 661 阅读 · 0 评论 -
Unicode字符集和多字节字符集关系
-2312编码看起来更像UTF-8编码导致的,这是一个巧合,不是所有文字都这样。可以使用记事本的打开功能,在打开“连通”文件时在最后一个下拉框中选择ANSI,就能正常显示了。反过来,如果之前保存时保存为UTF-8编码,则直接打开也不会出现问题。如果将“连通”文件放入MS Word中,Word也会认为它是一个UTF-8编码的文件,但它不能确定,因此会弹出一个对话框询问用户,这时选择“转载 2014-07-09 21:45:18 · 810 阅读 · 0 评论 -
vs2008下MFC中采用ado连接MySQL(ODBC、非ODBC或C API方式)
其实,以前弄过sql,mysql应该是顺理成章很简单的事情,但很无奈,傻傻地弄了很久,还请教了别人,别人告诉我的跟我在网上查到的都是一样的,但还是不行,归根接地就是“mysql-connector-odbc-5.2.4-win32”这个odbc这里版本号出了问题。自己下载的是mysql-installer-community-5.6.10.1(含odbc5.2.4),装完后发现自带了odbc5转载 2014-03-03 20:26:42 · 1111 阅读 · 0 评论 -
struct和typedef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是转载 2014-02-19 22:00:29 · 679 阅读 · 0 评论 -
MFC消息响应机制分析
---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解。1.引言---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库。MFC的框架结构大大方便了程序员的编程工作,但是为转载 2013-07-04 20:42:57 · 668 阅读 · 0 评论 -
静态链接库LIB和动态链接库DLL的区别
1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库转载 2013-07-19 14:37:29 · 762 阅读 · 0 评论 -
Unicode字符集和多字节字符集关系(一)
另外可参考:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词http://blog.youkuaiyun.com/smonster/archive/2008/10/31/3194587.aspx unicode、ucs-2、ucs-4、utf-16、utf-32、utf-8http://stallman.blogbus.com/logs/41709878.htmlU转载 2012-03-02 11:58:18 · 5689 阅读 · 2 评论 -
VC中调用COM组件的方法
准备及条件: COM服务器为进程内服务器,DLL名为simpCOM.dll,该组件只有一个接口IFoo,该接口只有一个方法HRESULT SayHello(void) 在SDK中调用 ===================================== 一、最简单最常用的一种,用#import导入类型库,利用VC提供的智转载 2013-07-19 13:56:36 · 1006 阅读 · 0 评论 -
回调函数的使用
如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。通过查询资料发现,其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数但是确有不同的数据成员。由于this指针的作用,使得将一个CALLBACK型的成员函数作转载 2013-07-04 20:52:14 · 662 阅读 · 0 评论 -
Unicode字符集和多字节字符集关系(二)
Unicode :宽字节字符集1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数?可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。2. 如何对DBCS(双字节字符集)字符串进行操作?转载 2013-06-28 11:19:39 · 1198 阅读 · 0 评论 -
DEBUG_NEW
DEBUG_NEW #define new DEBUG_NEW 说明: 帮助查找内存错误。用户在程序中使用DEBUG_NEW,用户通常使用new运算符来从堆上分配。在Debug模式下(但定义了一个DEBUG符号),DEBUG_NEW为它分配的每个对象记录文件名和行号。然后,在用户使用CMemoryState::DumpAllObjectSince成员函数时,每个以DEBUG_NEW分配转载 2013-07-31 17:08:28 · 970 阅读 · 0 评论 -
堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没转载 2013-07-26 15:46:55 · 707 阅读 · 0 评论 -
c++重写、重载、重定义
1. 重写 (override): 父类与子类之间的多态性。子类重新定义父类中有相同名称和参数的虚函数。1) 被重写的函数不能是 static 的。必须是 virtual 的,或者是 override 的 ( 即函数在最原始的基类中被声明为 virtual , c++ 中没有 override) 。2) 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型)3)转载 2013-11-07 11:14:57 · 761 阅读 · 0 评论 -
动态库的搜索路径
简单整理一下,备忘;只关注Linux和Windows,其他情况不了解。dbzhang800 20110617WindowsWindows下动态的库的搜索顺序,MSDN Dynamic-Link Library Search Order 中有详细的介绍。我们此处只关注比较正统的搜索顺序:包含可执行文件的目录 Windows的系统目录 (该目录可通过GetSystemDir转载 2013-11-14 22:18:02 · 642 阅读 · 0 评论 -
C/C++连接MySql数据库
本文对如何使用MySql的API连接MySql数据库,开发环境为VS2008. 一、VS2008工程设置工作首先,建立一个windows应用程序的工程,将C/C++->预处理器->预处理器定义下的_WINDOWS改为_CONSOLE,将连接器->系统->子系统 选择为控制台。由于我们要使用Mysql的API,并且我们机子上肯定安装了Mysql数据库,所以我们要将转载 2014-02-28 16:20:26 · 820 阅读 · 0 评论 -
全局变量不能在函数外部赋值
#include #define MAX_SIZE 10 //通过const修饰的变量的含义代表该变量所在的内存空间是只读的,在定义的时候,必须进行初始化,因为一旦定义好以后该内存空间是不允许修改的 //const和define的区别: //1.const定义的包含有一个变量的所有要素(内存空间,内存空间的大小,内存中所存放的值,内存空间所取的名字),而d转载 2014-02-19 22:49:10 · 1896 阅读 · 0 评论 -
C++ 工程实践(5):避免使用虚函数作为库的接口
陈硕 (giantchen_AT_gmail) Blog.youkuaiyun.com/Solstice 摘要:作为 C++ 动态库的作者,应当避免使用虚函数作为库的接口。这么做会给保持二进制兼容性带来很大麻烦,不得不增加很多不必要的 interfaces,最终重蹈 COM 的覆辙。本文主要讨论 Linux x86 平台,会继续举 Windows/COM 作为反面教材。本文是上一篇《C+转载 2014-09-16 17:26:36 · 745 阅读 · 0 评论