预处理命令
一.宏定义
C语言标准允许在程序中用一个标识符来表示一个字符串,称为宏。标识符为宏名,在编译预处理时,将程序中所有的宏名用相应的字符串来替换,这个过程称为宏替换,宏分为两种:无参数的宏和有参数的宏。
无参数宏定义的一般形式为:
#define 标识符字符串
“#”代表本行是编译预处理命令。define是宏定义的关键字,标识符是宏名。
注意: 宏定义和其他编译预处理命令不是以分号结尾的。
例如:使用无参数宏的程序,输入半径,求园的周长,面积和体积。
第二行宏定义,用PI来代表3.1415926,宏替换是在程序中用相应的字符串来替换宏名,编译器预处理程序对他不做任何检查。
有参数宏的一般形式为:
#define 标识符(形参表) 字符串
如果有多个形参,像函数参数一样以逗号隔开。在程序中使用有参数宏的形式是:
标识符(实参表)
例如 演示了有参数宏的实现方法。
二.文件包含
文件包含是指把指定源文件的全部内容包括到当前源程序文件中。
文件包含命令的一般形式为:
#include"文件名" 或#include<文件名>
文件包含预处理命令#include的作用是使一个源文件可以将另外一个源文件的全部内容包含起来,把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源文件程序文件连成一个源文件。
一个include命令只能指定一个被包含文件,若有多个文件要包含,则需要多个include命令。
文件包含允许嵌套,即在一个被包含的文件中可以包含另一个文件。
三.条件编译
一般情况下,源程序中所有的行都被编译,有时希望其中一部分内容只在某个条件成立或不成立时才去编译,也就是对一部分内容指定编译的条件,这就是条件编译。
条件编译命令有以下几种模式。
模式一:
#ifndef 标识符
程序段1
#endif
其含义是:如果没有定义标识符,则编译程序段1.
模式二:
#ifndef 标识符
程序段1
#else
程序段2
#endif
其含义是:如果没有定义标识符,就编译程序段1,否则就编译程序段2.
模式三:
#ifdef 标识符
程序段1
#endif
其含义是:如果没有定义标识符,就编译程序段1,否则就不编译该程序段。