gpt4 book ai didi

c++ - 为什么arduino对某些 'functions'使用宏,例如min(),max(),constrain()?

转载 作者:行者123 更新时间:2023-12-03 07:02:00 25 4
gpt4 key购买 nike

尽管我通常是宏的粉丝,但是我不明白为什么Arduino的制造商选择使用宏而不是实际的函数来表示其一些算术“函数”。仅举几个例子:

min()
max()
constrain()
他们的网站通知人们不要从这些“函数”中调用函数,也不要在方括号()中使用前缀/后缀,因为它们实际上是宏。
考虑到arduino语言实际上是C++,因此它们本来可以轻松使用(内联)函数,并防止任何用户陷入众所周知的宏陷阱之一。
人们通常出于某种原因做事。到目前为止,我还没有找到这些原因。所以我的疑问是:为什么Arduino制造商选择使用宏而不是函数?

最佳答案

Arduino是基于更旧的代码和库(例如AVR-libc)构建的,其中宏在Arduino甚至还没有存在之前就已得到广泛使用。
在现代编程中,不建议使用宏(相对于内联函数),因为它不进行类型检查,不检查编译错误,并且如果处理不当可能会导致一些副作用。

关于c++ - 为什么arduino对某些 'functions'使用宏,例如min(),max(),constrain()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64863511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com