C++宏

时间:2020-02-23 14:30:01  来源:igfitidea点击:

本文中,我们将重点介绍系统编程的一个重要方面-C++宏。

什么是C++宏?

在进入宏之前,让我们首先了解系统编程中预处理器的概念。

"预处理器"可协助编译器并在程序开始编译之前给出指令以预处理某些命令!由于预处理器指令是系统编程语句,因此它们不以分号结尾。

"宏"就是这样的预处理器指令之一。
可以将其视为一段已分配了名称/标签的代码。
因此,每当编译器遇到此名称时,编译器都会用分配给标签/名称的整个代码段替换该名称。

这将导致代码的可重用性,并节省大量的编译时间。

现在,让我们在接下来的部分中重点介绍宏的结构。

在C++中定义宏

宏是在C++编程中使用#define指令定义的。
看看下面的语法!

#define macro_name text/function

我们为宏指定一个名称,该名称是编译器在遇到宏名称后将替换的整个文本/函数的标签。

因此,在执行程序期间,所有宏都将在编译程序之前由指定的文本/函数替换。

C++宏的示例

在下面的示例中,我们使用#define指令定义了一个宏,如下所示:

#include <iostream> 
using namespace std;
#define PI 3.14 //macro variable
int main() 
{ 
	float area = 0.0;
	int r = 2;
	area = PI*r*r;
	cout<<"Area of the circle: "<<area;
	return 0; 
} 

因此,当编译器遇到宏名称(即" PI")时,它会在编译整个代码之前用3.14替换宏名称。

输出:

Area of the circle: 12.56

现在,我们使用一个函数作为宏的替换值,如下所示。

#include <iostream> 
using namespace std;
#define PI 3.14
#define PERIMETER(r) (2*PI*r) //macro function
int main() 
{ 
	float peri_meter = 0.0;
	int r = 10;
	peri_meter = PERIMETER(r);
	cout<<"Perimeter of the circle: "<<peri_meter;

	return 0; 
} 

因此,当编译器遇到宏名" PERIMETER"时,它将用定义为该宏的替换值的函数替换该宏。

输出:

Perimeter of the circle: 62.8