第八章 编译预处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八章 编译预处理相关的知识,希望对你有一定的参考价值。
- 编译预处理指令
(1)宏定义
(2)条件编译
(3)文件包含
- 宏定义
宏定义是指将一个标识符(又称宏名)定义为一个字符串(或称替换文本)。在编译预处理时,对程序中出现的所有宏名都用相应的替换文本去替换,这被称为“宏替换”或“宏展开”。C语言中,“宏定义分为无参宏定义和带参宏定义两种。
-
- 无参宏定义
#define 标识符 替换文本
#define 表示该语句行是宏定义命令
标识符 所定义的宏名,习惯上用大写字母表示
替换文本 可以是常量、关键字、表达式、语句等任意字符串。
-
- 带参宏定义
带参宏定义的一般形式为: #define 宏名(形参表) 替换文本 //中间没有空格 如: #define M(y) y*y+3*y //宏定义 //形参一般用括号括起来 ... k = M(5); //宏引用 ... 宏展开时,先用 y*y+3*y 替换M(5),再将文本中的形参y用实参5代替,最终得到:k=5*5+3*5;
条件编译
- 条件编译的三种形式
条件编译有三种形式:
(1)如果标识符是已经被#define定义的宏名,就编译程序段1,否则,编译程序段2
#ifdef 标识符
程序段1
#else
程序段2
#endif
(2)与第一种相反,如果标识符未被定义,则对程序段1进行编译
#ifndef 标识符
程序段1
#else
程序段2
#endif
(3)如果常量表达式的值为非真(0),则执行程序段1
#if 常量表达式
程序段1
#else
程序段2
#endif
文件包含
所谓文件包含是指在一个文件中包含另一个文件的全部内容,使之成为该文件的一部分。 文件包含由文件包含命令#include来实现,其一般形式为: #include<文件名> //格式一 #include"文件名" //格式二 “文件名”是指被包含的文件,称为头文件。 文件包含命令的功能是将指定头文件的内容包含到该命令出现的位置并替换此命令行。 格式一与格式二的主要区别是在存放头文件的路径上。 格式一的预处理程序只在系统规定的目录(include子目录,由用户在设置编译环境时设置)中 去查找指定的头文件,若找不到,则出错,这成为标准方式。如标准库函数一般都使用格式一。 使用格式二时,预处理程序现在当前工作目录中寻找指定的头文件,若找不到,再按标准方式 去查找。用户自己编写的头文件一般都使用格式二。 格式二中的双引号内可以含有路径,如: #include"C:\TC\F2.c"
以上是关于第八章 编译预处理的主要内容,如果未能解决你的问题,请参考以下文章