c语言中“宏”是个什么东西 有什么意义

Python010

c语言中“宏”是个什么东西 有什么意义,第1张

“宏”,就是大的意思,c语言中的宏,是一种可以代表任何语言元素的标识符

这里还有一个概念,就是宏定义,例如:#define

A

b+c

宏定义出现在c语言的源代码中,在正式编译前,编译器会进行预处理,而预处理过程包括一个很重要的任务(当然还有其它任务),就是替换宏,这种替换是一种机械的替换,并不考虑标识符的语法,语义,也就是说当遇到上面的A时,会直接替换成b+c。

还有一种更加灵活的宏,是带参数的宏,例如:#define

F(a,b)

(a)+(b)

替换时会根据引入参数,这样,F(1,2)会被替换成(1)+(2)。

宏定义是C语言提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解。

1. 不带参数的宏定义:

宏定义又称为宏代换、宏替换,简称“宏”。

格式: #define 标识符 字符串

其中的标识符就是所谓的符号常量,也称为“宏名”。

预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。

掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。

(1)宏名一般用大写

(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义

(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。

(4)宏定义末尾不加分号;

(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。

(6)可以用#undef命令终止宏定义的作用域

(7)宏定义可以嵌套

(8)字符串" "中永远不包含宏

(9)宏定义不分配内存,变量定义分配内存。

2. 带参数的宏定义:

除了一般的字符串替换,还要做参数代换。

您好!很高兴为您解答。

宏定义的用处主要体现在便于程序的调试上。

比如我要写一个计算圆相关信息(周长、面积等等)的程序,需要定义π(3.14):

#define PI 3.14

那么势必PI这个标识可以在程序中代替所有的3.14,如果我发现计算的精度不够,需要π的更多有效位时,则只需将宏定义修改为:

#define PI 3.1415926

那么程序中的所有PI都会变成3.1415926

可想而知,没有宏定义,我需要将代码中全部的3.14都手动改为3.1415926

即使是定义double PI=3.14,你会发现当代码很长时,在乱军丛中找到一行“double PI=3.14”是多么困难的事。

又比如数组,定义时是不能出现“int a[n]”这样的定义的,编译通不过,因为必须规定数组长度。

但如果是:

#define N 10

int a[N]

就可以,对宏定义编译器是不作检查的,应为宏定义只是简单的符号替换。所以一旦我还没有确定要定义多长的数组,但又想通过编译时,就可以提现宏定义的用处了。

如此看来,宏定义提升了程序编写的灵活性。

望采纳~如您还有不解,欢迎追问~