C语言之宏定义使用

C语言之宏定义使用

前言

C语言中宏定义使用广泛,例如使用宏替代“魔鬼数字”、利用宏代替函数做简单的处理提高效率、实现条件定义等等。

一、使用宏定义替代“魔鬼数字”

不论是自己写代码还是看他人代码,魔鬼数字是比较让人头大的写法,魔鬼数字让阅读代码的人难以理解,同时自己写的代码常时间不看遇到魔鬼数字也会一脸懵逼,想着是哪个傻叉写的,一看作者是自己。。。。。。

  • 使用宏代替魔鬼数字的方法如下:
//已控制灯光为例,例如根据电机转动状态控制状态灯的点亮、熄灭、快速闪烁。
使用魔鬼数字方式:
/*返回值0、1、2分别对应电机停止转动、电机快转、电机慢转*/
int led_mode = 0;
led_mode = get_motor_status();
switch (led_mode) {
	case 0: {
		led_close();
	}
	break;
	case 1: {
		led_flash();
	}
	break;
	case 2: {
		led_slow();
	}
	break;
	default:
	break;
}

使用宏定义方式:

#define MOTOR_STOP 0
#define MOTOR_RUN_FAST 1
#define MOTOR_RUN_SLOW 2


int led_mode = 0;
led_mode = get_motor_status();
switch (led_mode) {
	case MOTOR_STOP: {
		led_close();
	}
	break;
	case MOTOR_RUN_FAST: {
		led_flash();
	}
	break;
	case MOTOR_RUN_SLOW: {
		led_slow();
	}
	break;
	default:
	break;
}

可以明显看出,宏定义相对于魔鬼数字更易于理解

二、参数宏

对于简单的逻辑处理可以用宏代替函数,在对时间要求较高的场景可以使用,参数宏相对于函数会节省时间和空间。
例如:

#define min(a,b)  ((a > b) ? b : a )

在对时间要求较为严格且逻辑处理简单的场景,可以使用这种参数宏代替函数,会节省空间和时间

三、条件定义

条件定义可以增加程序的健壮性,例如可以使用条件定义,在不删除原有基线代码的基础上,选择性的只将想要用的代码编译。

  • 例如头文件中加上条件定义代码,如果之前已经编译了同名头文件,那么就不在将当前头文件编译进工程,防止导致出错
#ifndef _PWM_H_
#define _PWM_H_
//自行定义,例如PWM的引进设置,函数声明

#endif
  • 可以通过宏控制开启关闭代码段
#define FLASH_TEST 1//0
//如果FLASH_TEST为1则执行flash测试代码,为0则执行正常的应用程序
#if FLASH_TEST 
flash_test();
#else
app_init();
#endif

后续补充

如果漏洞欢迎大佬们指出,一同交流

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值