宏定义:
宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制。
宏定义分为不带参数的宏定义和带参数的宏定义。
不带参数的宏定义:
宏定义指令#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 参数