宏定义和const变量/普通函数的区别
2021/8/30 23:09:24
本文主要是介绍宏定义和const变量/普通函数的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
宏定义常量和const变量比较:
1. 宏定义常量在预处理阶段进行替换,不进行类型检查;
const变量在编译阶段进行类型检查;
2. 宏定义常量不存在于常量表中,系统不为其分配内存;
const变量存在于常量表中,系统为其分配内存;
3. 大量使用宏,每次预编译都需进行替换,易导致编译时间过长;
const变量不存在上述问题;
4. 宏定义表达式直接进行字符串替换,存在边缘效应;
const变量不存在上述问题;
// 预想的N值是5 #define N 2+4 // 预想的a的值是3,可实际上a的值是4 int a = N/2;
宏定义函数和普通函数比较:
简短并且被频繁调用的函数经常用函数式宏定义来代替实现
// 函数式宏定 #define MAX(a,b) ((a)>(b)?(a):(b)) // 普通函数 MAX(int a,int b) { return a>b?a:b;}
1. 宏定义函数的参数没有类型,预处理器只做形式上的替换,传参时不做参数类型检查;
普通函数的参数有实际类型,传参时做参数类型检查;
2. 宏定义函数本身不进行编译生成指令,但是在代码中每次出现的位置都要编译生成指令,其编译生成的目标文件较大;
普通函数本身要编译生成指令,在代码中每次出现的位置编译生成传参指令和调用指令,其编译生成的目标文件较小;
3. 宏定义函数存在边缘效应,内层括号和外层括号不可以省略;
普通函数不存在上述情况;
参考链接:https://www.cnblogs.com/dong008259/archive/2011/12/27/2302625.html
这篇关于宏定义和const变量/普通函数的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)