C++预处理命令和C++宏定义#define
时间:2014-10-17 22:21 点击:次
可以在C++源程序中加入一些“预处理命令”(preprocessor directives),以改进程序设计环境,提高编程效率。预处理命令是C++统一规定的,但是它不是C++语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。
现在使用的C++编译系统都包括了预处理、编译和连接等部分,因此不少用户误认为预处理命令是C++语言的一部分,甚至以为它们是C++语句,这是不对的。必须正确区别预处理命令和C++语句,区别预处理和编译,才能正确使用预处理命令。C++与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。
C++提供的预处理功能主要有以下3种:
分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C++语句相区别,这些命令以符号“#”开头,而且末尾不包含分号。
可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为:
#define 标识符 字符串
这就是已经介绍过的定义符号常量。如:
#define PI 3.1415926
还可以用#define命令定义带参数的宏定义。其定义的一般形式为:
#define 宏名(参数表) 字符串
如:
#define S(a, b) a*b //定义宏S(矩形面积),a、b为宏的参数
使用的形式如下:
area=S(3, 2);
用3、2分别代替宏定义中的形式参数a和b,即用3*2代替S(3, 2)。因此赋值语句展开为:
area=3*2;
由于C++增加了内置函数(inline),比用带参数的宏定义更方便,因此在C++中基本上已不再用#define命令定义宏了,主要用于条件编译中。
现在使用的C++编译系统都包括了预处理、编译和连接等部分,因此不少用户误认为预处理命令是C++语言的一部分,甚至以为它们是C++语句,这是不对的。必须正确区别预处理命令和C++语句,区别预处理和编译,才能正确使用预处理命令。C++与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。
C++提供的预处理功能主要有以下3种:
- 宏定义
- 文件包含
- 条件编译
分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C++语句相区别,这些命令以符号“#”开头,而且末尾不包含分号。
可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串。定义宏的作用一般是用一个短的名字代表一个长的字符串。它的一般形式为:
#define 标识符 字符串
这就是已经介绍过的定义符号常量。如:
#define PI 3.1415926
还可以用#define命令定义带参数的宏定义。其定义的一般形式为:
#define 宏名(参数表) 字符串
如:
#define S(a, b) a*b //定义宏S(矩形面积),a、b为宏的参数
使用的形式如下:
area=S(3, 2);
用3、2分别代替宏定义中的形式参数a和b,即用3*2代替S(3, 2)。因此赋值语句展开为:
area=3*2;
由于C++增加了内置函数(inline),比用带参数的宏定义更方便,因此在C++中基本上已不再用#define命令定义宏了,主要用于条件编译中。
顶一下
(4)
100%
踩一下
(0)
0%
上一篇:C++内部函数和外部函数
相关内容:
最新内容
热点内容
- QQ群
-
微信
- 返回首页
- 返回顶部