例程详析动态链接库
动态链接库(DLL,即 Dynamic-Link Library)是可执行的模块,但它没有自己的堆栈,必须在调用动态链接库函数的程序环境下运行。动态链接库不仅可以作为一个运行模块,包括函数代码,而且可以包含程序以外的任何数据或资源(位图、图标等等)。动态链接库就是给应用程序提供函数或者资源。 动态链接与静态链接是相对立的。静态链接的时候,可执行程序内包含了所访问的函数的代码,可执行程序占用的空间较大;但运行时,不需要其他模块支持,从而速度相对较快。动态链接的可执行程序中不包含动态访问的函数代码,仅仅包含...
C++箴言:只要有可能就推迟变量定义
在极大程度上,为你的类(包括类模板)和函数(包括函数模板)提供正确的定义是战斗的关键性部分。一旦你得到正确的结果,相应的实现很大程度上就是直截了当的。但是仍然有一些注意事项需要当心。过早地定义变量会对性能产生拖累。过度使用强制转换会导致缓慢的,难以维护的,被微妙的 bug 困扰的代码。返回一个类内部构件的句柄会破坏封装并将空悬句柄留给客户。疏忽了对异常产生的影响的考虑会导致资源的泄漏和数据结构的破坏。过分内联化(inlining)会导致代码膨胀。过度的耦合会导致令人无法接受的漫长的建构时间。 这一切问题...
介绍一个专门处理C++异常的类和例子
下载源代码和例子 简介: CExceptionLogger,是一个可以免费使用的C++类,用它可以截获未处理异常,如:非法存...
C++指针使用方法解惑
在下列函数声明中,为什么要同时使用*和符号?以及什么场合使用这种声明方式? void func1( MYCLASS *pBuildingElement ); 论坛中经常有人问到这样的问题。本文试图通过一些实际的指针使用经验来解释这个问题。 仔细看一下这种声明方式,确实有点让人迷惑。在某种意义上,"*"和""是意思相对的两个东西,把它们放在一起有什么意义呢?。为了理解指针的这种做法,我们先复习一下C/C++编程中无所不在的指针概念。我们都知道MYCLASS*的意思:指向某个对象的指针,此对象的类型为MYC...
C++中class与struct的区别
很老的问题了。今天稍微总结了下,有遗漏的地方和错误的地方还望大家补充。 关于使用大括号初始化 class...
汉字行编辑程序
我写了一个汉字行编辑程序,请各位多多指教,找出本程序的不足,以提高本程序的功能,! 程序如下: #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #define len 4 #define LINESIZE 80 /*每行长度为80个字符*/ strUCt TEXT { struct TEXT *prior; char str[LINESIZE+1]; /*包括 '\0' 在内,设置长度为LINES...
关于中缀表达转后缀表达
今天做了一题的题目是这样的:假设表达式由单子母变量和双目四则运算算法构成。试写一算法,将以通常书写形式且书写正确的表达式转换为逆波兰式。 下面是我做这题的思想以及具体程序,不知道大家觉得这样做好不好,我是用递归做的. /*思想: 1.第一个字符肯定先放到新数组. 2.如果碰到'*',或者'/'的话就先把这个符号后面的那个字符放入新数组,然后再将符号压进去. 3.如果碰到'+','-'的话,如果下一个符号的优先级和它们一样就用同上的方法,如果后面符号的优先级比它们 高的话就用for循环来查找下一个与它们优...
BCB6命令行工具简介
BCB6有很多命令行工具。 下面简要的作一个介绍: BCC32.EXE C++32位编译程序 BPR2MAK.EXE 转换XML文件格式为MAKE文件格式 BRC32.EXE 32位资源编辑程序 BRCC32.EXE 32位资源外壳程序 CONVERT.EXE 转换.DFM文件为.TXT文件格式 CPP32.EXE C 32位预处理程序 DCC32.EXE 32位PASCAL语言编译程序 FCONVERT.EXE OEM和ANSI格式之间文本转换 GREP.EXE 寻找文件实用程序 ILINK32.EX...
Turbo C下的寄存器变量
在Turbo C下有种变量叫寄存器变量。使用寄存器的好处是可以提高程序的运行速度!因为减少了寻址时间。 看下面的C代码: main() { int i,k; register j; for(i=1;i=100;i++); for(k=1;k=100;k++); for(j=1;j=100;j++); } 这里j被声明为寄存器变量。通过tcc -S后看它的部分汇编代码。 ====================================================================...
COM编程入门2
wcstombs() 这个CRT函数wcstombs()是个简化版,但它终结了WideCharToMultiByte()的调用,所以最终结果是一样的。其原型如下: size_t wcstombs ( char* mbstr, const wchar_t* wcstr, size_t count ); 以下是参数解释: mbstr 接受结果ANSI串的字符(char)缓冲。 wcstr 要转换的Unicode串。 count mbstr参数所指的缓冲大...
COM编程入门1
本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念。内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件。本文不包括如何编写自己的COM对象和接口。 COM即组件对象模型,是Component Object Model 取前三个字母的缩写,这三个字母在当今Windows的世界中随处可见。随时涌现出来的大把大把的新技术都以COM为基...
C++的效率浅析
自从七十年代C语言诞生以来,一直以其灵活性、高效率和可移植性为软件开发人员所钟爱,成为系统软件开发的首选工具。而C++作为C语言的继承和发展,不仅保留了C语言的高度灵活、高效率和易于理解等诸多优点,还包含了几乎所有面向对象的特征,成为新一代软件系统构建的利器。 相对来说,C语言是一种简洁的语言,所涉及的概念和元素比较少,主要是:宏(macro)、指针(pointer)、结构(strUCt)、函数(function)和数组(array),比较容易掌握和理解。而C++不仅包含了上面所提到的元素,还提供了私有...