预处理详解(其二)

目录

前言:

一、库文件包含:#include

1、尖括号 <>

2、双引号""

注意:

二、#define的替换:

#define 和 typedef:

1、处理时间:

2、 作用域不同:

相同点:

 #undef指令:

三、条件编译:

#if:

#endif:

 #elif:

注意:

#ifdef:

#ifndef:

四、defined函数:

五、解决头文件重复引入的问题:

1、每个文件的开头用#ifndef:

 2、#pragma once 指令

五、总结:


前言:

        这篇主要讲#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----在编译阶段编译器处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值