#include
#include是一个预处理指令,预处理这个动作发生在编译之前:
预处理-->编译-->链接
#include作用就是在预处理时,将文件中的全部文本内容复制到#include所在的位置
这里面有 <> 和 “”,这两个有什么区别?
<>,编译器回到标准库路径下查找头文件(标准库通常使用<>)
"",会在当前目录下查找头文件,如果没有头文件再去标准库路径下查找头文件(自己的库使用“”)
#define 宏定义
#define 名字 值
1.结尾没有分号;,这一点和#include以及所有预处理指令一样,都不是C语句
2.值可以是数字、表达式、代码语句等
3.和#include一样,在预处理阶段执行,文本替换;
带参数的宏定义 一切都要()
1.整个值的表达式都要()
2.参数出现的地方要()
#define MIN(a,b) (((a)<(b))?(a):(b))
条件编译预处理指令
#if,#else,#elif,#endif,#ifdef,#ifndef
typedef
typedef用来将已有的数据类型定义一个别名,语法格式:
typedef 数据类型 名字
好处是便于阅读和维护
1.应用场景不同:
1)typedef用来给一种数据类型定义别名;
2)#define用来给数字、表达式、代码语句定义别名
2.执行时机不同
1) typedef在编译阶段执行
2)#define在预编译阶段执行
3.定义方法不同:
1)#define别名在替换对象的前面,并且定义后面不用加分号#definePI314159
2)typedef的别名在替换对象的后面,并且定义后面需要加分号
typedef signed char int8 t;