编译预处理——无参数宏定义

作者:vich 发布于 2008-10-19 10:07 评论(1)人阅读

编译预处理是C/C++编译系统的一个组成部分。它告诉编译系统在对源程序进行编译之前应该做些什么。这类命令称为编译预处理命令。

编译预处理命令有三种:宏定义,文件包含和条件编译。在此我只介绍最简单的无参宏定义和文件包含。

无参数宏定义

无参数宏定义是最简单、最常用的编译预处理命令,它是用一个指定的的标识符来代表一个字符串,该标识符称为宏名,被定义的字符串成为替换文本,其格式为:

#define <宏名><字符串>


【例1.3】
#define PI 3.1415926
#define F "r=%f,area=%.2f"
#define EPS 1.0e-0.5

一个标识符被定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,当程序被编译时,先将宏名用被定义的字符串替换,这称为宏展开,替换后才进行编译。

【例1.4】分析下列程序被替换后的结果。
#define PI 3.1415926
#define R 4.0
#define F "r=%f,area=%.2f"
main()
{
float area;
area=PI*R*R;
printf(F,R,area)
}
经过预处理后,main函数被展开为如下形式:
main()
{
float area;
area=3.1415926*4.0*4.0
printf=("r=%f,area=%.2f",4.0,area)
}

说明:

  • 宏名一般习惯用大写字母表示,以便于变量名相区别。
  • 使用宏名代替字符串,可减少重复书写的工作量。
  • 宏展开时不做语法检查,只是原样替换。
  • 宏可以嵌套定义

【例1.5】宏定义的嵌套
#define PI 3.1415926
#define R 4.0
#define AREA PI*R*R
#define F "r=%f,area=%.2f"
main()
{
printf(F,R,AREA);
}

经过预处理后,main函数将被替换为:
main()
{
printf("r=%f,area=%.2f",4.0,3.1415926*4.0*4.0);
}

运行结果为:r=1.000000,area=50.27

文件包含

关于文件包含,我将在下次文章中讲解。敬请关注。

转载请注明:转载自微风博客
相关文章:
·C程序的基本语法成分(2008-10-18 8:34:2)
·C/C++程序编辑、编译与运行(2008-10-16 8:45:40)
·C/C++程序设计规则(2008-10-10 8:53:37)
·简单的C/C++程序实例(2008-10-8 22:44:54)
·C语言的发展史(2008-10-8 15:47:27)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  • quote 1.Gravatar Icon tijiao
  • 看了感觉不错。给你顶一个
    顺便提交申请一下链接
  • 2008-10-19 21:55:02 回复该留言

我的SNS

相关标签

最新文章

技术摘要

最新评论及回复

热门文章