0. 理解
- 定义: 文件在
预处理阶段
的操作 - 形式: 以
#
号开头 - 分类:
宏定义
、条件编译
和文件包含
1. 宏定义
- 作用:文件在
预处理阶段
, 将所有宏名
替换为宏值
- 规范
- 宏名都
大写
, 多个单词之间用_
隔开, 并且每个单词
全部大写
- 宏名以
k
开头, 多个单词之间用驼峰命名
- 宏名都
- 分类
- 不带参数
#define CLASS_COUNT 100 #define kClassCount 100
- 带参数
#define SQUARE(v) ((v)*(v)) int main() { int res = SQUARE(2 + 2) / SQUARE(2 + 2) * SQUARE(2 + 2); printf("%d\n", res); return 0; }
- 不带参数
2. 条件编译
- 判断
条件
#define SCORE 90 int main() { #if SCORE == 100 printf("非常满意\n"); #elif SCORE == 99 printf("优秀\n"); #else printf("继续加油\n"); #endif return 0; }
- 判断
是否定义宏
#define SCORE 90 #define COUNT 30 int main() { #ifdef SCORE printf("score\n"); #elif COUNT printf("count\n"); #else printf("other\n"); #endif return 0; } #define SCORE 90 #define COUNT 30 int main() { #if defined(SCORE) printf("score\n"); #elif defined(COUNT) printf("count\n"); #else printf("other\n"); #endif }
- 判断
是否没有定义宏
#define SCORE 90 int main() { #ifndef SCORE printf("no score\n"); #else printf("score\n"); #endif return 0; } #define SCORE 90 int main() { #if !defined(SCORE) printf("no score\n"); #else printf("score\n"); #endif return 0; }
3. 文件包含
- 形式
1. #include <stdio.h> 2. #include "wx.h"
- 作用: 将
" "
和< >
中内容
完全拷贝过来#include <> 查找: 会先去编译器环境下查找, 找不到再去系统的环境下查找 #include "" 查找: 会先在当前文件查找, 找不到再去编译器环境下查找, 找不到再去系统的环境下查找
- 注意
1. 在 .h 文件 编写头文件卫士 2. 间接拷贝 3. 防止循环拷贝
网友评论