模块化程序设计之编译预处理

版权声明:转载请注明 https://blog.csdn.net/qq_34720818/article/details/86751822

模块化程序设计之编译预处理

编译预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。它由编译预处理程序负责完成。
在这里插入图片描述
一、宏定义

是用一个标识符即宏名(通常为大写)来表示一个字符串。
1、不带参数的宏定义

以下代码利用不带参数的宏定义计算平方

#include "stdio.h"
#define M (x*x)
int main()
{
	int x=6;
	printf("%d的平方值为 %d\n",x,M);
	return 0;
}

在这里插入图片描述
注意
a、宏定义一般写在函数之外,其作用域为宏定义命令起到源程序结束。如果要提前终止其作用,可使用#undef命令。
b、宏名在源程序中若用双引号括起来,则编译预处理程序不对其作宏代换。
c、宏定义允许嵌套
2、带参数的宏定义

以下代码利用带参数的宏定义计算两数之和

#include "stdio.h"
#define M(a,b) (a+b)
int main()
{
	int x=6;
	int y=6;
	printf("%d+%d = %d\n",x,y,M(x,y));
	return 0; 
}

在这里插入图片描述
二、条件编译
条件编译也可以用条件语句来实现。但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长;而采用条件编译,则根据条件只编译其中的code1或者code2,生成的目标程序较短。因此,如果条件选择的程序很长,采用条件编译的方法十分必要。
条件编译三种形式之一的示例代码

#include "stdio.h"
#define M(a,b) (a+b)
int main()
{
#ifdef M
	printf("已有求和宏定义\n");
#else
	prinf("没有求和宏定义\n");
#endif
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34720818/article/details/86751822