登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 第九章:编译预处理

[复制链接]
发表于 2017-1-21 10:41:04 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C语言
学习安排: 详见:http://bbs.hpuedd.com/forum.php?mod=viewthread&tid=837&fromuid=385
开始时间: 2017-01-19
结束时间: 2017-01-19
带‘#’号的一般都为预处理

在谈论预处理前,我们应明白

当我们编写完代码时,机器并不能识别

要经过一系列的处理,将其转换为二进制代码

这样机器才能识别

预处理就是在转换的过程中,先处理一遍(如,宏展开,宏替换等)

(附连:预处理

我们经常使用#include <stdio.h>

它就是典型的宏

它将stdio.h文件的内容添加到你的程序前进行支持

当你添加它进入你的程序时,你就可以使用它所提供的函数

但这里有一个问题,有人会见到以下形式

#include “stdio.h”

两者有一定区别

当使用<>时,机器会先从编译器的库文件夹中寻找

而当使用“”时机器会先从当前文件夹(也就是你的代码所在位置)开始寻找,当找不到时,才会到库文件夹中寻找

由此,我们可以将程序拆分成多份然后放入相同文件夹,然后再用添加头文件的方法将其添加到主程序中

如:

1-1.PNG

对,我添加的是.c文件

它与.h文件有什么区别呢?

本质上没有

(附连:.c与.h的区别

(PS:关于窗口的操作,附图)

1-2.PNG

(中文版有许多BUG,建议使用英文版,主要是笔者英文实在太渣,无奈选择中文版,反正考完试就卸了)

下面说宏替换

#define a b

它将a全部替换为b

如:

1-3.PNG

如果接触过单片机的话,这句出现的非常频繁

它还有一个特殊用法,带参替换

1-4.PNG

有一丝函数的味道

它还可以进行嵌套替换

如:

1-5.PNG


对于一些条件宏


#ifdef(#ifndef)

#else

#endif


#if (表达式)

#else

#endif

等,个人认为与条件编译无差(并且现阶段用的非常少),在此不过多赘述

小结:

用替换宏将无符号类型替换

用包含宏将其封装

(参考答案见附件)

(预计还有2-3章,结束C语言)



test.zip

437 Bytes, 下载次数: 408

将两文件,放入同一文件夹

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表