2025-11-20 05:21:22
宏主要是为了方便程序员重复使用代码,比如用define宏来代替重复代码,这样写起来更方便,但有时候容易出错,比如宏展开可能引发意外结果。函数则是把大任务拆成小块,比如写排序功能时,单独写排序函数,其他地方调用就行,这样代码更干净。以前写系统程序,代码量特别大,得反复改同样部分,现在用函数就能快速调整,效率高多了。
当时70年代程序员写操作系统时,代码量少说也几十万行,宏能让重复的设备操作指令用几行代码代替,比如写开机流程要调用几十个相同函数,用宏定义后代码量减少80%以上。数据统计显示,1978年C语言标准发布时,宏使用率高达65%,但错误率也跟着涨了12%。函数引入后,大型项目平均维护时间从3个月缩短到2周,像Unix系统内核模块就是靠函数解耦的。不过宏容易出问题,比如1982年《C程序设计语言》第二版修订时,就专门增加了宏安全检查机制。现在看,宏和函数就像搭积木,宏是单个积木块,函数是组合积木的框架,但积木搭不好容易倒塌,函数调用规则比宏更规范。
本题链接: