嵌入式C语言20 宏函数

宏函数知识点:

宏函数是一种只进行简单替换的函数,在预处理时进行函数的替换。

编译分为四步:预处理,编译,汇编,链接

宏函数定义格式为: #define    宏函数名(参数名)  函数

宏函数优点:节省内存(没有形参,不需要占内存)

                      执行效率高(替换效率高,避免通过函数地址找到函数和传参)

宏函数缺点:不够安全(没有语法检查) 

                      编译时间长 (需要很长的时间进行函数替换)


1. #define 宏常量名 宏常量

比如: #define A 10

那么在预处理时,所有的A将会用10来替换。

2. #define 宏函数名(参数) 函数

比如: #define a(x) x+1

那么同样在预处理时,程序里所有的a(x)将会用x+1来替换

3.值得注意的是:宏函数是直接进行替换,所以没有运算符的优先级,所以能写括号的要把括号都写上。

比如 # define a(x) x*x+1

当程序中使用宏函数时:a(10+10)

理论上应该等于 401

但实际运行时 结果为 10 + 10 *10 +10 +1 = 121

所以在定义的时候要写成  # define a(x) (x)*(x)+1,这样就不会出错了。


参考程序如下:
#include <stdio.h>

# define A 1 //宏定义

# define a(para) para*para + 1

# define a_m(para) (para)*(para) + 1

# define b(para1 , para2) para1 *para2 + 1

int main()

{

printf("%d\n",A);

printf("%d\n", a(100 ));

printf("%d\n", a(10 + 10 ));

printf("%d\n", a_m(10 + 10 ));

printf("%d\n", b(10 , 10 ));

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容