目录
前言:
这篇主要讲#undef、#if、#elif、#endif、#ifdef、#ifndef等
预处理命令
在接触#if、#undef这类预处理指令前,我们接触过#define、#include等预处理命令,它作用就是在编译和链接之前,对源文件进行一些文本方面的操作,比如文本替换、文件包含、删除部分代码等,这个过程叫做预处理(在编译开始之前会对源文件进行简单加工)
一、库文件包含:#include
1、尖括号 <>
#include<stdio.h>
直接在系统路径(标准路径)查找(相当于直接去标准库)
2、双引号""
#include"stdio.h"
编译器会先在当前目录下(源文件所在目录下)查找头文件,如果没有找到,再到系统路径(标准路径)下查找(先找自己的库,没有再去标准库)
注意:
1、一个 #include 命令只能包含一个头文件
2、同一个头文件可以被多次引入,多次引入的效果和一次引入的效果相同,因为头文件在代码层面有防止重复引入的机制
3、头文件包含允许嵌套
(头文件只能包含变量和函数的声明,不能包含定义,否则在多次引入时会引起重复定义错误)
4、替换方式:在预处理阶段会删除这条指令,将包含文件的内容替换的该源文件中,如果重复包含次数过多,会导致编译压力比较大(代码量剧增),为了解决这个问题用到了条件编译
二、#define的替换:
并不是所有的#define都能进行替换
#define 和 typedef:
1、处理时间:
#define(宏定义)----由预处理器来处理
typedef----在编译阶段由编译器处理