C语言学习笔记19

宏定义:

宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制。

宏定义分为不带参数的宏定义和带参数的宏定义。

不带参数的宏定义:

宏定义指令#define用来定义一个标识符和一个字符串,以这个标识符来代表这个字符串,

在程序中每次遇到该标识符时就用所定义的字符串替换它。宏定义相当于给指定的字符串起一个别名。

宏定义不带参数形式为:

#define 宏名 字符串

#表示这是一条预处理命令。

宏名:是一个标识符。

字符串:可以是常数、表达式、格式字符串等。

注意:

1、如果在字符串中含有宏名,则不进行替换。

2、如果串长于一行,可以在该行末尾用\续行。

3、宏名有效范围为定义命令之后到此源文件结束。

4、可以用#define命令终止宏定义的作用范围。

带参数的宏定义:

带参数的宏定义既要进行字符串替换,也要进行参数替换。

形式为:

#define 宏名(参数表)字符串

注意:宏定义参数要有括号。

习题:定义一个带参数的宏,实现功能比较16与9这两个数值,并返回最小值。代码如下:

#include指令:

在一个源文件中使用#include指令可以将另一个源文件的全部内容包含进来,也就是将另外的文件包含到本文件之中。#include使编译程序将另一源文件嵌入带有#include的源文件中,被读入的源文件必须用双引号或尖括号括起来。

条件编译:

1、#if命令:

#if的基本含义是:如果#if命令后的参数表达式为真,则编译#if到#endif之间的程序段,否则跳过这段程序,#endif命令用来表示#if段的结束。

形式为:

#if 常数表达式

     语句段

#endif

习题:用#if命令输入与50比较大小的功能。代码如下:

习题:利用#if和#else语句判断19054是否是能被8527整除的偶数。代码如下:

#elif指令用来建立一种“如果···或者如果··"这样阶梯状多重编译操作选择,这与多分支if语句中的else if类似。

#elif形式为:

#if 表达式

语句段

#elif 表达式1

语句段

#elif 表达式2

语句段

...

#elif 表达式n

语句段

#endif

习题:利用#elif指令来判断输入的体温是否为正常值。代码如下:

#ifdef以及#ifndef命令:

#ifdef形式为:

#ifdef宏替换名

语句段

#endif

如果宏替换名已经被定义过,则对"语句段"进行编译,如果未定义#ifdef后面的宏替换名,则不编译。

#ifdef与#else连用,形式为:

#ifdef 宏替换名

语句段1

#else

语句段2

#endif

如果宏替换名已经被定义过,则对"语句段1"进行编译,如果未定义则不编译。

#ifndef一般形式为:

#ifndef 宏替换名

语句段

#endif

#ifndef与#else连用,形式为:

#ifndef 宏替换名

语句段1

#else

语句段2

#endif

习题:利用#ifdef和#ifndef分别输出”Believe yourself"和“Don't give up”。代码如下:

#undef命令:

使用#undef命令可以删除事先定义的宏。

形式为:

#undef 宏替换名

#line命令:

形式为:

#line 行号["文件名"]

#pragma命令:

作用:设定编译器的状态或者指示编译器完成一些程序。

形式为:

#pragma 参数

 

posted @ 2019-07-24 11:28  ♬守望者♬  阅读(223)  评论(0编辑  收藏  举报