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

本文深入探讨了模块化程序设计中的编译预处理技术,包括宏定义的使用和条件编译的优势。通过具体代码示例,讲解了不带参数及带参数的宏定义如何简化代码,以及条件编译如何优化目标程序长度。

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

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

是用一个标识符即宏名(通常为大写)来表示一个字符串。
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
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mekeater

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值