【发布时间】:2013-01-24 01:03:03
【问题描述】:
我经常发现自己在写类似的东西
int computedValue = ...;
return MAX(0, MIN(5, computedValue));
我希望能够把它写成一个单行宏。它必须没有副作用,就像现有系统宏 MIN 和 MAX 一样,并且应该适用于与 MIN 和 MAX 相同的数据类型。
谁能告诉我如何把它变成一个宏?
【问题讨论】:
-
你不能简单地这样做,定义一个最小-最大宏,使用最小和最大宏吗?还是我误解了你的问题?
-
通常称为
clamp。 -
只是出于好奇,有什么理由不使用 C++ 标准库中的 std::min 和 std::max 吗?
-
@ybungalobill 或绑定,或裁剪,或......我认为最常见的面额取决于应用程序域。
-
那么,也许可以去掉 C++ 标签,因为 C++ 程序员倾向于避免使用宏,特别是如果标准库提供了更好的解决方案。
标签: objective-c c macros predefined-macro