摘要:
"#ifdef 语句1 程序2 #endif“ 可翻译为:如果宏定义了语句1则程序2。 作用:我们可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。 代码举例:新建define.cpp文件 #include "iostream.h" int main() { #ifdef DEBUG cout<< "Beginning execution of main()"; #endif return 0; } 运行结果为: Press any key to continue 改写代码如下: #include "iostr 阅读全文
摘要:
#undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 在此程序中,我们将取消在先前程序中对预处理器的定义。 #include <iostream.h> #include<string.h> #defineMAX 5 #undef MAX void main() { char name[MAX]="abcde"; //只能用abcd,否 阅读全文
摘要:
DLL文件(Dynamic Linkable Library 即动态链接库文件),是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其他资源比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的 EXE 程序时,在每次修改重建时都必须调整 阅读全文
摘要:
反汇编工具 IDA Pro 是一个世界顶级的交互式反汇编工具,它的使用者囊括了软件安全专家,军事工业,国家安全信息部门,逆向工程学者,黑客。从功能上它大大胜过了w32dasm。近来它的盗版已经在网上传播开了,你可以很轻松得到它。 IDA PRO 简称IDA ,英文:Interactive Disassembler的缩写。它是由HEX RAY SA 公司开发的,一家多年以来从事二进制代码反编译C的软件安全公司,其公司的旗舰产品就是著名的Hex-Rays.Decompiler(是IDA PRO的插件)。 IDA有两种可用版本。标准版(Standard)支持二十多种处理器。高级版(Advanc... 阅读全文
摘要:
在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行. 阅读全文
摘要:
原型:extern char *strupr(char *s); 用法:#include <string.h> 功能:将字符串s转换为大写形式 说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针。 举例: // strupr.c #include <syslib.h> #include <string.h> main() { char *s="Copywrite 1999-2000 GGV Technologies"; clrscr(); printf("%s",strupr(s)); getchar() 阅读全文
摘要:
此文所有的实验都是基于下面的程序: char str[10]; for (int i = 0; i < 10; i++) str[i] = '!'; 执行完后str的值为 str = "!!!!!!!!!!" 我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的惊叹号,这样就可以方便的观察str发生了怎样的变化。下面我们做几个小实验,看看使用sscanf和正则表达式格式化输入后,str有什么变化。 实验1: sscanf("123456","%s",str); 阅读全文
摘要:
编码指不同国家的语言在计算机中的一种存储和解释规范 ANSI与ASCII n最初,Internet上只有一种字符集——ANSI的ASCII字符集(American Standard Code for Information Interchange, “美国信息交换标准码),它使用7 bits来表示一个字符,总共表示128个字符,后来IBM公司在此基础上进行了扩展,用8bit来表示一个字符,总共可以表示256个字符,充分利用了一个字节所能表达的最大信息 nANSI字符集:ASCII字符集,以及由此派生并兼容的字符集,如:GB2312,正式的名称为MBCS(Multi-Byte Chactacte 阅读全文
摘要:
VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; union { LONG lVal; BYTE bVal; SHORT iVal; FLOAT fltVal; DOUBLE dblVal; VARIANT_BOOL boolVal; _VARIANT_BOOL bool; SCODE scode; CY.. 阅读全文
摘要:
在进行COM编程的时候常常用到VARIANT类型的变量, 其中的字符串分量为bstrVal即双字节的BSTR, 如果需要将其转换为字符串STRING我以前使用强制类型转换:(const char*)bsVal;在看了潘爱民老师的<<COM编程原理>>偶尔发现如下函数(例子摘自MSDN)//compile options needed: /Gr or /Gz#include <comutil.h>int main(){char sz[]="hello";_bstr_t b;b = _com_util::ConvertStringToBSTR 阅读全文