简单讲解C语言中宏的定义与使用

2025-05-27 0 70

定义是预编译功能的一种, 预编译又称为预处理, 是为编译做的预备工作的阶段。处理#开头的指令, 比如拷贝 #include 包含的文件代码,#define定义的替换,条件编译等。
使用定义的好处:使用定义的好处:可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如 π 这个常量,我们有时候会在程序的多个地方使用,如果每次使用都重新定义,一来比较麻烦,二来容易出错,所以我们可以把 π 做成定义来使用。

语法说明:
(1)名一般用大写
(2)使用可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)定义末尾不加分号;
(5)定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止定义的作用域
(7)定义可以嵌套
(8)字符串" "中永远不包含
(9)定义不分配内存,变量定义分配内存。

定义:

?

1

2

3

4

5
#define 宏名 内容

#define kArrLen 10 // OC驼峰命名法:首字符为k,其他单词首字符大写

#define ARR_LEN 10 // C语言中的宏命名规范:所有字母大写,单词用下划线分隔

例如:

?

1
#define PI 3.1415926

我们就可以使用 PI 来代替 3.1415926 即可:

?

1

2

3
float r = 0.5;

float area = PI * r * r;

printf("area = %f\\n", area);

在程序预编译阶段会把 PI 替换成 3.1415926:

?

1
float area = 3.1415926 * r * r;

定义内容很简单,也很好理解,但是有几个如下的注意事项:

1、因为定义只是简单的替换,如果定义的内容有运算的时候,要把每个变量加上括号,以免影响运算的优先级

比如:#define MUL(A, B) (A * B)

使用方法:

?

1
MUL(3 + 5, 5 + 6) //会替换成 3 + 5 * 5 + 6 = 34

我们希望(3 + 5) * (5 + 6),所以定义定义的时候应该:

?

1
#define MUL(A, B) ((A) * (B))

2、注意定义后面没有分号(;),它不是一条语句

3、定义是在程序编译前期进行替换,此时程序还没有编译

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 简单讲解C语言中宏的定义与使用 https://www.kuaiidc.com/75225.html

相关文章

发表评论
暂无评论