C程序设计有重要的预处理指令,这些指令均以#开头是程序设计的重要部分。
预处理发生在程序在编译前。C预处理器把预处理指令转换成相应的程序段,再编译程序,最后运行结果。
这种预处理方式可简化程序设计环境,提高编程效率。比如,宏定义#define PI 3.1415926,则程序中的PI均表示字符串3.1415926。
像这样,用一个标识符代表一个字符串,既减少了程序中重复书写某些字符串的工作量,又优化程序设计环境,提高编程效率。
要深入掌握和使用程序设计语言进行编程,必须学习预处理指令,推荐从如图以下几个方面来系统学习预。
1.宏定义
什么是宏?在计算机中宏是一种批量处理的称谓。
宏定义分为不带参数和带参数的。
不带参数宏定义比较简单,其实是字符串替换,一般格式为#define 标识符 字符串 注意预处理指令不是程序设计语言本身的组成部分,不需要加分号,举个栗子#define array_size 100。
带参数的宏定义不是简单地进行字符串替换,还要进行参数替换,其格式一般为:#define S(a,b) a*b
当定义了带参数的宏定义,在程序与剧中调用该宏定义时,将程序与剧中相应的实参代替宏定义中出现的形参,这个实参可以使常量、变量也可以是表达式。如果宏定义中的字符串不是参数字符则保留,如图所示:
2.“文件包含”处理
在我的专栏中几乎所有程序都用过文件包含指令,如#include<stdio.h>。
什么是“文件包含”处理?
所谓“文件包含”处理,是指一个源文件可以将另一个文件的全部内容包含进来。
C语言中用#include指令来实现这一操作,其一般格式为:#include “文件名”或#include <文件名>。
“文件包含”处理是怎么工作的呢?
“文件包含”处理,发生在预处理阶段,其工作是将要包含的文件和主文件融合,形成一个新的源文件,然后再进行编译得到目标文件。
像这样通过“文件包含”预处理,大大简化了程序设计人员的重复劳动。
3.条件编译
一般情况下,源程序中所有行都参加编译。但是有时希望程序中的一部分内容满足一定条件时才编译怎么办呢?
这个时候可以对这一部分内容制定编译条件,这就是“条件编译”。
条件编译采用的关键字是ifdef和ifndef,其格式为
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是,若所指定的标识符已经被#define指令定义过,则在程序编译阶段对程序段1进行编译,否则编译程序段2.
预处理指令是程序设计中重要部分,深入学习程序设计和编程需掌握这部分内容。