C语言之宏定义

发布于:2025-02-22 ⋅ 阅读:(13) ⋅ 点赞:(0)


前言

        C语言中的宏定义是一种预处理指令,用来定义常量、函数宏、条件编译等。宏定义使得代码更具有可读性和可维护性,同时也提高了代码的灵活性和可重用性。

        在C语言中,宏定义通常使用#define指令来创建。通过宏定义,我们可以在程序中使用符号常量来代替特定的数值或字符串,这样可以使代码更易于阅读和理解。另外,宏定义还可以用于定义函数宏,即将一段代码片段封装成一个宏,以便在程序中多次调用,减少代码的重复性。


一、宏定义前操作

清理->重新生成

 

若注释掉头文件,宏.i只有下面的情况

 

二、引用自定义.h文件

相当于复制粘贴

 #pragma once:仅包含一次,否则以下代码将在.i文件中出现多次

#include"a.h"
#include"b.h"
#include"a.h"
#include"b.h"
#include"a.h"
#include"b.h"

 

三、宏定义#define 

替换的作用

//#include <stdio.h>
#include"a.h"
#include"b.h"

/*C 语言启动的经历:
	1:预处理期: 在这一阶段,源码中的所有预处理语句得到处理例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。
	2:编译期:编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。
	3:汇编期:生成机器语言代码,保存在后缀为.o的目标文件中
	4:链接期:经过汇编以后的机器代码还不能直接运行。为了使操作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。
	5:执行期:执行.EXE文件,得到运行结果
	*/
//#define :宏·宏替换
//增强阅读
//宏·常量
#define SUCCESS 0
#define LEN 1000


int main()
{
	/*宏替换简称宏的格式:
	#define 宏替换名称  替换内容
	*/
	int a[LEN], b[LEN], c[LEN];
	 
	return 0;
}

 

四、对比typedef的差异

五、替换一个函数或表达式

	//1定义宏
#define PT printf("hello world");
	//2使用宏
	PT PT

六、嵌套宏替换

不用循环的1000个helloworld

#define A PT PT PT PT PT PT PT PT PT PT
#define B A A A A A A A A A A
#define C B B B B B B B B B B
C

七、用宏和typedef创建一个“布尔型数据

#define TRUE 1
#define FALSE 0
typedef int boolean;
boolean gu_shi = TRUE;

八、定义有参数的宏

	//宏·“函数”
#define ARR_LEN(array_name) (sizeof(array_name) / sizeof(array_name[0]))
#define ARR_LEN2(arr_name,arr_type) (sizeof(arr_name) / sizeof(arr_type))
int aa[] = { 4,3,6,9,8,5,2,4 };
int len1 = ARR_LEN(aa);
int len2 = ARR_LEN2(aa,int);

double bb[] = { 1.1,2.7,3.14,9.8 };
int len3 = ARR_LEN(bb);
int len4 = ARR_LEN2(bb, double);

 


总结

        总的来说,宏定义在C语言中扮演着至关重要的角色,可以使代码更加灵活、可读性更强,并且提高了代码的可维护性。


网站公告

今日签到

点亮在社区的每一天
去签到