1. 宏定义:(宏定义时必须小心,保证宏代换之后不会有错,因为预处理程序对宏不做检查。
宏定义在函数外,其作用域从宏定义开始到源程序结束,如果要终止其作用域, 用#undef 命令即可)
无参宏定义:#define
‘#’代表这是条预处理命令,define为宏定义命令
格式:#define 标识符 字符串(数值)
带参宏定义;相当于一个自定义函数
格式:#define 宏名(形参表) 字符串
带参宏定义中,形式参数不分配内存单元,而宏调用时,实参有具体的值,实参需要作类型说明。
带参宏仅仅做符号代换,不存在值传递问题。
2. 文件包含:(将指定的文件插入该处命令行处代替该命令行,从而把指定的文件和当前 源文件连成一个源文件)
例如:#include<stdio.h>
#include”math.h”
区别在于:“”在当前文件目录下找文件
<>在系统指定文件目录下找文件
3. 条件编译:(按照不同的条件去编译不同的程序部分)
格式1:#ifdef 标识符
程序段1
#else
程序段2
#endfif
如果标识符被定义了就执行程序段1,否则执行程序段2
格式2:#ifndef 标识符
程序段1
#else
程序段2
#endfif
如果标识符未被定义了就执行程序段1,否则执行程序段2
格式3:#if 常量表达式
程序段1
#else
程序段2
#endfif
如果常量表达式的值非0,则执行程序段1,否则执行程序段2
4. 结构体:(将相关联的数据打包成一个整体,传输时传输整个整体)
一般格式1:struct 结构体名
{
类型名1 成员名1;
类型名2 成员名2;
类型名3 成员名3;
。。。。。。
};
格式2:struct 结构体名
{
类型名1 成员名1;
类型名2 成员名2;
类型名3 成员名3;
。。。。。。
};
Struct 结构体名 / *结构体名简写;
5. #define 和 typedef
宏定义只是简单的字符替换,而typedef可以让新命名的标识符能更改定义的变量。