C语言--宏定义与分析
发布日期:2022-02-17 02:39:45 浏览次数:35 分类:技术文章

本文共 669 字,大约阅读时间需要 2 分钟。

C语言用#define 来定义宏。我们可以用宏来定义宏常量。宏常量的本质是字面量,字面量是不占用内存的。

宏是没有语法检查的,语法错误只能被编译器检测。宏是由预处理器处理的。在预处理处理期间,只是进行简单的文本替换,所以会出现一些副作用比如参数是不会进行计算的。

另外#define表达式的使用类似函数表达式。#define表达式可以比函数更强大,但也比函数更容易出错。

比如: #define _SUM_(a,b) (a)+(b)

#define _MIN_(a,b) (a)<(b)?(a):(b)

#define _DIM_(a) sizeof(a)/sizeof(*a)

int a=0,b=3,c=0;

c= _MIN_(a++,b) ;//这是原因  c=(a++)<(b)?(a++):(b);

问a=多少?c=多少?

宏表达式被预处理器处理,编译器是不知道宏表达式的。

宏表达式用实参代替形参,不进行任何运算。宏表达式没有调用开销

宏表达式不能定义递归。

比如:#define _SUM_(n) ((n>0)?_SUM_(n-1)+n0:0)   //这样定义是错误的。

另外宏常量和表达式是没有作用域的。

如:void test()

{

      #define PI 3.1415

      #define Area(r) r*r*PI;

}

double crecle (double r)

{

      return Area(r);

}

int main()

{

printf("%f\n",crecle(3));

}

学习交流群199546072

转载地址:https://blog.csdn.net/qq_39809601/article/details/81488733 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c复习--++ 与-- 操作
下一篇:C语言复习--#和##

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年02月28日 19时22分33秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

c语言编程max,C语言编程题及答案.doc 2019-04-21
android测试页面,自动执行界面测试 | Android 开发者 | Android Developers 2019-04-21
android 图片点击变色,Android开发实现ListView点击item改变颜色功能示例 2019-04-21
android增删改查布局,Android之父_增删改查 2019-04-21
vowifi android开关,如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi) 2019-04-21
电脑端的mafsvr服务关掉_网吧才是电脑优化的精髓!学会3招你也不用羡慕网吧的流畅了... 2019-04-21
html获取文件路径_HTML 文件路径 2019-04-21
mysql滴的一声就关了_关于mysql数据库在输入密码后,滴的一声直接退出界面的解决办法(详细办法)... 2019-04-21
mysql in 有序_mysql中的in排序 mysql按in中顺序来排序 2019-04-21
mysql 行转列 显示_mysql 行转列 (结果集以坐标显示) 2019-04-21
mysql 完全备份恢复吗_MySQL完全备份与恢复 2019-04-21
wpf 绘制矩形_WPF制作倒影效果 2019-04-21
mariadb mysql 5.7_MariaDB 10.1 和 MySQL 5.7 在普通商用硬件上的表现 2019-04-21
由于连接方在一段时间后没有正确答复或连接的主机_新风换气机使用效果不佳,为何?掌握正确使用方法就好了... 2019-04-21
mysql数据库断电恢复_MySQL数据库InnoDB引擎下服务器断电数据恢复方法 2019-04-21
python入门程序异常_Python 入门 之 异常处理 2019-04-21
python 键盘输入int_Python编程 Python如何获取数据 2019-04-21
h3c trunk口改access_H3CNE配置VLAN的Access链路端口和Trunk链路端口 2019-04-21
mysql 查询姓王_MySQL查询语句练习题,测试足够用了 2019-04-21
mysql多实例脚本_mysql多实例脚本 2019-04-21