1)不带参 #define 宏名 字符串
例:#define PI 3.14.5926
|
2)带参 #define 宏名(参数列表) 字符串
例: #define MAX(x,y) (x)>(y)?(x):(y)
注意:由于宏只是作单纯的替换工作,所以一定要在必要的时候加上括号。
|
PS:宏名代替一个字符串,减少程序中重复书写的工作量。
只作简单的替换,不作正确性检查,不分配内存空间。
#define命令出现在函数外面,在定义之后到本源文件结束有效。
可以引用已定义的宏名,层层置换。
程序中双撇号括起来的字符串内的字符,不进行置换。
宏名与参数间不能有空格,空格只出现在字符串之前。
|
2.typedef 定义类型
typedef int NUM[100];
用typedef的方法很简单。例:
a.按定义数组变量形式书写:int n[100];
b.将数组名换成想要的字符:int NUM[100];
c.然后在前面加上typedef:typedef int NUM[100];
d.这样就可以用NUM去定义长度为100的数组了:NUM n;即表示int n[100];
定义变量同理只将变量名换为想要的字符。
如:int i;
则将i换为COUNT,那么typedef int COUNT;
之后就可以用COUNT去定义int类型的变量了:COUNT i;
由此可见typedef 与 define的区别是很大的。define只是替换字符而已。
如前面的例子NUM n,就表示int n[100];这点就define就办不到。
|
3.条件编译,这个是很有用的。但我一直没有好好利用它。
1) #ifdef 标志符 程序段1 #else 程序段2 #endif
2) #ifndef 标志符 程序段1 #else 程序段2 #endif
3) #if 表达式 程序段1 #else 程序段2 #endif
1) 2)只需要程序中定义或没有定义标志符而已,而不需要定义出标志符的值。
即#define debug //debug表示上面的标志符,随便起个意思下
则就可以控制下面的1)2)的编译情况了。
3)一定要定义出表达式的值才行。如
#define debug 0
注:上面段中的else都是不必要的,只在需要的时候用。 |
4.#include
文件包含,一个源文件可以将另一个源文件的全部内容包含进来,放入本文件#include处。
#include "……"
双引号,是先到用户当前目录查找,若找不到,再按标准方式查找。双引号内可引入文件路径
#include <……>
存放C库函数头文件的目录中寻找要包含的文件,是标准方式。
|
阅读(1589) | 评论(0) | 转发(0) |