1、宏定义
1、无参数宏
无参数宏定义一般形式为:
#define 标识字符串
“#”代表本行是编译预处理命令。define是宏定义的关键词,标识符是宏名。字符串是宏名所替代的内容,可以是常数、表达式等。
例:使用无参数宏计算圆的面积
#include "stdafx.h"
#define p 3.1415*2*2
int _tmain(int argc, _TCHAR* argv[])
{
printf("%f",p);
return 0;
}
2、有参数宏
有参数的宏类似于有参数的函数,其定义的一般形式为:
#define 标识符(形象表) 字符串
如果有多个形参,像函数参数一样已逗号隔开。在程序中使用有参数宏的形式是:
标识符(实参表)
例:有参数宏的实现方法。
#include "stdafx.h"
#define MAX(x,y)( x.y?x:y)
main()
{
int a=1,b=2,max;
max=MAX(a,b);
printf{"the max between(%d,%d)is%d\n",a,b,max};
}
2、文件包含
文件包含
包含命令中的文件名可以用双引1号括起来,也可以用尖 括号括起来。例
如以下写法都是允许的:
#include"stdio.h"
#in cI ud e<m ath.h >
但是这两种形式是有区别的:使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;使用双弓|号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。用户编程时可根据自己文件所在的目录来选择某一种命令形式。
一一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。
文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。
3、条件编译
预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。1、第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
2、第二种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
3、第三种形式
#if 常量表达式
程序段1
#else
程序段2
#endif