这次不讲算法了,讲一讲C语言里面一个很强大的功能:宏。
宏,是一个大家都很熟悉的概念,很多人也经常使用宏,但是用的都不怎么深,我所知道的最常见的用法就是用宏抽象数组长度。
#define N 99
a[N] = {0};
实际上,宏就是简单的替换,编译器在编译程序时,遇到N,会将其替换成99。
那么下面来看这段代码:
#define sqrt(x) x*x
sqrt(5);
sqrt(3+2);
这里就出现了问题,sqrt(5)的结果是25没错,但是sqrt(3+2)的结果错误,为什么呢?注意,前面说过,宏是简单替换sqrt(3+2)替换后变成3+2*3+2,所以结果是11,想要结果正确,需要这样定义宏:
#define sqrt(x) (x)*(x)
这样就没问

本文探讨了C语言中宏的强大功能,不仅介绍了如何使用宏抽象数组长度,还揭示了宏替换可能导致的问题及解决方法。通过实例讲解了#和##运算符的用法,以及如何处理可变数量的参数。文章提醒开发者注意宏的使用需谨慎,以避免潜在的错误和陷阱。
最低0.47元/天 解锁文章
8057

被折叠的 条评论
为什么被折叠?



