一、预处理指令#define
#define叫做宏定义,语法格式:
#define 名字 值
#define PI 3.14159
- 结尾没有分号;
- 和#include一样,在预处理阶段执行,文本替换
- 值可以是数字、表达式、代码语句等
- 宏定义的好处,便于程序的阅读和维护
#define MAX 50
#define M 3+2
#define N (3+2)
#define NULL 0
#define EOF -1
#define ERROR -1
- 定义一个宏名字之后,可以在其他宏定义中使用,例如
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
二、没有值的宏定义
- #include是一个预处理指令,预处理这个动作发生在编译之前:
- #include 的作用是,在预处理时,将文件中的全部文本内容复制粘贴到#include所在的位置
1、#define 名字
这种宏定义,是用于条件编译的,配合其它的预处理指令来检测这个宏是否被定义过
#define DEBUG
#ifdef DEBUG
printf("%s:This error is in \"%s\" on line %d.\n", __FUNCTION__, ___FILE___, ___LINE___);
#endif
当运行时,这三个宏分别能返回所在的函数,所在的文件名和所在的行号。
2、#include预处理指令
1)<>和””有什么区别
#include <stdio.h>
#include “head.h”
- 使用尖括号<>,编译器会到标准库路径下查找头文件/usr/include
- 使用双引号””,编译器首先在当前目录下查找头文件,如果没有找到,再到标准库路径下查找
2)规范用法
- 标准库的头文件使用尖括号<>
- 自定义的头文件使用双引号””
3)宏定义指令
#define、#undef
三、宏定义和 const 常量区别
1、 定义的区别
- 宏用 #define 声明,const 常量用 cons