有什么方法可以保持内部常见的宏?

时间:2013-07-14 02:16:12

标签: c++ macros

例如,我有一个简单的宏

#define MIN(a, b)   (a) < (b) ? (a) : (b)

我想用

MIN(pow(2, 3) , 10);

内部共同给人带来麻烦。我可以这样做

int a = pow(2, 3);
MIN(a, 10);

我正在寻找一种更好的方式,比如在宏中保留pow(2, 3)更具可读性?可能吗?谢谢!

1 个答案:

答案 0 :(得分:4)

您可以改为使用std::min

#include <algorithm>

//...
double x = std::min(pow(2, 3) , 10);

通常,您应该更喜欢内联函数而不是宏。如果宏的目的是允许它适用于各种类型,则可以使用模板。

template <typename T>
inline T SomeFunction (T x, T y) {
    T result;
    //...do something with x and y and assign to result
    return result;
}