#define 用法大全.docx
《#define 用法大全.docx》由会员分享,可在线阅读,更多相关《#define 用法大全.docx(9页珍藏版)》请在三一办公上搜索。
1、#define 用法大全#define用法集锦修正版 Definition定义: The #define Directive You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #define identifier token-stringopt #define identifier( identifieropt, . , identifieropt ) token-stringopt
2、Usage用法: 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME 就定义好了,它代表1000,如果在程序里面写 if(i(y)?(x):(y); 这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模 板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。 但是这样做的话存在隐患,例子如下: #define Add(a,b) a+b; 在一般使用的时候是没有问题的,但是如果遇到如:c * Add(a,b) * d 的时候就会出现问题,代数式的本意 是a+b 然后去和c,d 相乘,但是因
3、为使用了define,所以式子实际上变成了 c*a + b*d 另外举一个例子: #define pin (int*); pin a,b; 本意是a 和b 都是int 型指针,但是实际上变成int* a,b; a 是int 型指针,而b 是int 型变量。 这是应该使用typedef 来代替define,这样a 和b 就都是int 型指针了。 所以我们在定义的时候,养成一个良好的习惯,建议所有的层次都要加括号。 3.1宏的单行定义 #define A(x) T_#x #define B 3.2 define的多行定义 define 可以替代多行的代码,例如MFC 中的宏定义 #define M
4、ACRO(arg1, arg2) do /* declarations */ stmt1; stmt2; /* . */ while(0) /* (no trailing ; ) */ 关键是要在每一个换行的时候加上一个 4.条件编译 在大规模开収,特别是跨平台和系统的软件里,define最重要的功能是条件编译。 就是: #ifdef WINDOWS . . #endif #ifdef LINUX . . #endif 可以在编译的时候通过#define 设置编译环境 5.如何定义宏、取消宏 /定义宏 #define MacroName MacroValue /取消宏 #undef Macro
5、Name /普通宏 #define PI (3.1415926) 带参数的宏 #define max(a,b) (a)(b)? (a),(b) 关键是十分容易产生错误,包括机器和人理解上的差异等等。 6.条件编译 #ifdef XXX (#else) #endif 例如 #ifdef DV22_AUX_INPUT #define AUX_MODE 3 #else #define AUY_MODE 3 #endif #ifndef XXX (#else) #endif 7.头文件(.h)可以被头文件或C文件包含; 重复包含 由于头文件包含可以嵌套,那么C 文件就有可能包含多次同一个头文件,就可能
6、出现重复定义的问题的 通过条件编译开关来避免重复包含 例如 #ifndef _headerfileXXX_ #define _headerfileXXX_ /文件内容 #endif Instances实例: 1、防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H /头文件内容 #endif 2、重新定义一些类型 防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean value type. */ typedef unsigned long int uint3
7、2; /* Unsigned 32 bit value */ typedef unsigned short uint16; /* Unsigned 16 bit value */ typedef unsigned char uint8; /* Unsigned 8 bit value */ typedef signed long int int32; /* Signed 32 bit value */ typedef signed short int16; /* Signed 16 bit value */ typedef signed char int8; /* Signed 8 bit v
8、alue */ /下面的不建议使用 typedef unsigned char byte; /* Unsigned 8 bit value type. */ typedef unsigned short word; /* Unsinged 16 bit value type. */ typedef unsigned long dword; /* Unsigned 32 bit value type. */ typedef unsigned char uint1; /* Unsigned 8 bit value type. */ typedef unsigned short uint2; /*
9、Unsigned 16 bit value type. */ typedef unsigned long uint4; /* Unsigned 32 bit value type. */ typedef signed char int1; /* Signed 8 bit value type. */ typedef signed short int2; /* Signed 16 bit value type. */ typedef long int int4; /* Signed 32 bit value type. */ typedef signed long sint31; /* Sign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- #define 用法大全 define 用法 大全
链接地址:https://www.31ppt.com/p-3139106.html