|
发表于 2014-5-21 20:33:31
|
显示全部楼层
宏定义和别名在windows程序的应用
别名
typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量用到。
它有助于创建于平台无关类型,甚至能隐藏复杂和难以理解的语法,使用typedef可编写出更加美观和可读的代码。所谓美观,意指typedef能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性以及未来的可维护性。
1·类型别名
typedef int size;
size fishc;//声明一个整型变量fishc
2·可以掩饰复合类型,如指针和数组
typedef char arr[81];
arr line;//声明一个大小为81的字符型数组line
typedef char *ptr;
ptr str;//声明一个字符型指针str
3·typedef与结构体结合使用
typedef struct TopMystruct
{
...
}Mystruct;
Mystruct student;//声明一个struct TopMystruct 类型的变量student
宏定义
1·简单的define定义
#define MAXTIME 1000
//编译器在处理代码之前会对MAXTIE进行替换为1000
2·define的“函数定义”
#define max(x,y) (x)>(y)?(x):(y)
//这个定义就会返回两个数中较大的那个。因为这个“函数”没有类型检查,就好像一个函//数模板似的,当然,它绝对没有模板那么安全就是了。
3.1·宏的单行定义
#define A(x) T_##x
#define B(x) #@x
#define C(x) #x
假设x = 1,则有:
A(1) == T_1//直接把x粘贴上去
B(1) == '1'//把x带上单引号后粘贴上去
C(1) =="1"//把x带上双引号后粘贴上去
3.2·define的多行定义
#define MACRO(arg1,arg2) do{\
/*declarations*/\
stmt1;\
stmt2;\
/*...*/\
}while(0)/*(notrailing;)*/
关键是换行的时候要加上一个“\”
4·条件编译
在大规模开发,特别是跨平台和系统的软件里,define最终要的功能是条件编译。如下:
#ifdef WINDOWS
// 如果 WINDOWS 宏被定义了,就执行这里的内容
#endif
#ifdef LINUX
// 如果 LINUX 宏被定义了,执行这里的内容
#else
// 如果 LINUX 宏没有被定义,执行这里的内容
#endif
在windows编程中的应用
1·定义常量提高可读性
2·灵活替换
3·防止头文件被重复定义
4·重新定义一些类型
5·得到指定地址上的一个字节或字
#define MEM_B(x) (*((byte*)(x)))
#define MEM_W(x) (*((word*)(x)))
|
评分
-
查看全部评分
|