09 2013 档案
摘要:void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int* pint;void* pvoid;pvoid = pint;//不过不能 pint= pvoid; 如果要将pvoid赋给其他类型指针,则需要强制类型转换如:pint= (int *)pvoid;②在ANSIC标准中,不允许对void指针进行算术运算如pvoid++或pvoid+=1等,而在GNU中则允许,因为在缺省情况下,GNU认为void*与char *一样。sizeof(*pvoid)== si
阅读全文
摘要:加入了像素填充函数,必须要在一个指定颜色的边界范围内,边界必须没有缺口。加入了鼠标类/* typedef void (*FUNCTION)(void); HMODULE HDll; HDll = LoadLibrary("SDL_PingGe.dll"); if(HDll == NULL) { printf("Load library failed!\n"); FreeLibrary(HDll); return 0; } FUNCTION fun = FUNCTION(GetProcAddress(HDll,M...
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/16/90211.html有一种被称为位域(bit-field) 的特殊的类数据成员,它可以被声明用来存放特定数目的位。位域必须是有序数据类型。它可以有符号也可以无符号。例如:class File {// unsigned int modified : 1; // 位域 (bit-field)};View Code 位域标识符后面跟有一个冒号,然后是一个常量表达式指定位数。例如modified 是一个只有一位构成的位域。 在类体中相邻定义的位域,如果可能的话,它们会被放在同一个整数的连续位中
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/16/90228.html偶然看到一道C++面试题:void foo(void) { unsigned int a = 6; int b = -20; (a+b>6)?puts(">6"):puts("6。 这道题主要考察两个东西。 1.隐式类型转换:int型变量转化成unsigned int, b成了正数. 2.负数的补码:计算机系统中的数值是以补码形式表示(存储)的。一、C++隐式类型转换 C++定义了...
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/21/90734.html在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就是进程的虚拟地址空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间。(在物理内存中,多进程载入DLL时,DLL的代码段实际上是只加载了一次,只
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90663.html前面介绍了怎么从DLL中导出函数和变量,实际上导出类的方法也是大同小异,废话就不多说了,下面给个简单例子示范一下,也就不多做解释了。DLL头文件: #ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 通过宏来控制是导入还是导出#ifdef _DLL_SAMPLE#define DLL_SAMPLE_API __declspec(dllexport)#else#define DLL_SAMPLE_API __declspec(dl
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90643.html前面介绍了怎么从DLL中导出函数,下面我们来看一下如何从DLL中导出变量来。声明为导出变量时,同样有两种方法: 第一种是用__declspec进行导出声明#ifndef _DLL_SAMPLE_H#define _DLL_SAMPLE_H// 如果定义了C++编译器,那么声明为C链接方式#ifdef __cplusplusextern "C" {#endif// 通过宏来控制是导入还是导出#ifdef _DLL_SAMPLE#define DLL
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90621.html上文我简单的介绍了如何建立一个简单DLL,下面再我简单的介绍一下如何使用一个DLL。当一个DLL被生成后,它创建了一个.dll文件和一个.lib文件;这两个都是你需要的。要使用DLL,就需要载入这个DLL。隐式链接这里有两个方法来载入一个DLL;一个方法是捷径另一个则相比要复杂些。捷径是只链接到你.lib 文件并将.dll文件置入你的新项目的路径中去。因此,创建一个新的空的Win32控制台项目并添加一个源文件。将你做的DLL放入你的新项目相同的目录下。#includ
阅读全文
摘要:转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/20/90619.html初学DLL,结合教程,总结一下自己的所得,希望对DLL初学者们有所帮助。 动态链接库(DLL)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理
阅读全文