美文网首页
第14章,预处理器

第14章,预处理器

作者: Dafanzi | 来源:发表于2017-01-08 13:52 被阅读0次

什么是预处理?

预定义符号

#define  指令

#define 指令定义的内容。如果在文本中有出现,就会简单直接替换成原有的内容。

1、宏

#define替换

宏参数和#define定义可以包含其他#define定义的符号。但是宏不可以出现递归。

宏与函数

较小的逻辑处理可以使用宏来实现,因为函数的话会导致程序的规模和速度处于劣势;

另外宏是与类型无关的,没有限制参数类型的;

相比较于函数,宏的缺点是每处使用宏时,一份宏定义代码的拷贝都将插入到程序中,除非宏定义很短,否则这样反而会更加程序的长度。

带副作用的宏参数

副作用就是在表达式求值时出现的永久性效果。

例如:

命名约定

宏和函数存在一些不同的地方,#define定义出的符号也和真正的变量有所不同。以示区别,我们常把宏名字和define符号大写。

#undef

命令行定义

-Dname   ,就声明了name这个宏,其值默认为1,当然默认值也会根据不同的编译器有所不同;

-Dname=stuff,声明了name这个宏,并时期值为stuff这个值;

提供符号命令行定义的编译器通常也提供在命令行中去除符号的定义,在UNIX编译器上,用-U可以执行这个任务,-Uname就可以把name这个宏给去掉。当这个任务和条件编译结合使用时,这个特性会很有用的。

条件编译

是否被定义

嵌套指令

文件包含

一般库文件包含用 #include 然后本地文件包含用#include "filename"

文件包含如果不适用绝对路径,就会去相应默认那几个位置去查找;

在一个将被其他文件包含的文件中使用#include指令是可能的。这样包含了这个文件的源文件也会自动包含另一个inlcude文件。标准要求编译器支持至少8层的头文件嵌套,但我们应该记住尽量不要包含太深。另外这种也会导致多重包含,虽然一般没什么问题,但诸如make这样的工具在使用时必须明确文件相互之间的依赖关系,我们解决的办法是使用条件编译这种方法来避免一个头文件被多次包含,使其只包含一次。(详情看C&POINTER290)

其他指令

相关文章

  • 关于预处理器LESS的使用

    要了解预处理器LESS的使用,首先得知道什么是预处理器,说到预处理就会讲到后处理器 一、预编译器和后编译 1.预处...

  • 【Java学习干货】SpringMVC中拦截器的使用

    什么是拦截器?SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处...

  • 初识css预编译之Less

    什么是less less是CSS的预处理器,学过C语言的同学应该对预处理器挺熟悉的把,C语言的编译过程就分为:预处...

  • jmeter随机生成11位手机号

    方法一 随机数生成方法,使用BeanShell 预处理程序 1、【线程组-添加-后置处理器-BeanShell 预...

  • /Zc:__plusplus的意义

    预 __cplusplus 处理器宏通常用于报告对特定版本的 C++ 标准的支持,默认情况下,Visual Stu...

  • 9、SpringMVC-拦截器

    一、概要 Spring Web MVC的拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预...

  • 二十二. SpringMVC-拦截器

    一、概要 Spring Web MVC的拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预...

  • C 程序结构

    C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 程序第一行#include 是预处...

  • 2018-05-07

    第 三 轮 抢 票预 告

  • 电脑技巧:酷睿i3、i5、i7

    Intel 第 7 代处理器型号与规格 Intel 处理器大类 在大分类上有着 酷睿(Core)、奔腾(Penti...

网友评论

      本文标题:第14章,预处理器

      本文链接:https://www.haomeiwen.com/subject/mvvqbttx.html