<c++基础(6)>宏定义与函数的区别

文章探讨了OpenVINO在Windows环境下遇到的与Windows.h冲突问题,重点关注了minwaindef.h中的宏定义。文章比较了宏定义与函数在性能、灵活性、内联展开、可读性和作用域方面的优缺点,指出在特定场景下它们的选择策略。
摘要由CSDN通过智能技术生成

最近需要使用openvino封装动态库,其中存在一个问题是openvino和windows.h之间的冲突,其主要是minwaindef.h中的宏定义引起的。所以好奇为什么使用宏定义处理函数过程。

//minwaindef.h中关于min、max的宏定义
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b)            (((a) < (b)) ? (a) : (b))
#endif

宏定义和函数各有优势,取决于具体的应用场景和需求:

  1. 性能:宏定义在编译时展开,没有函数调用的开销,因此在性能要求高、频繁调用的场景下,宏定义通常比函数更高效。
  2. 灵活性:宏定义可以进行参数化,能够处理不同类型的参数,而函数需要在定义时确定参数类型。这使得宏定义在一些需要动态生成代码或处理复杂表达式的情况下更为灵活。
  3. 内联展开:宏定义可以实现代码的内联展开,将代码直接插入到调用处,避免了函数调用的开销和跳转。这对于一些简单的、频繁调用的函数来说是非常有利的。
  4. 代码可读性:函数通常比宏定义更具有可读性和可维护性,因为函数可以提供更清晰的结构和命名,减少了代码的冗余和错误。
  5. 作用域:宏定义的作用域是整个文件,而函数可以通过静态关键字限定作用域,避免命名冲突和不必要的暴露。

总体来说,在对性能要求高、需要灵活处理参数、希望进行内联展开以提高效率的情况下,宏定义比函数更有优势。而在强调代码可读性、可维护性以及需要复用代码块的情况下,函数通常更适合。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wdmcs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值