例如,我有一个简单的宏
#define MIN(a, b) (a) < (b) ? (a) : (b)
我想用
MIN(pow(2, 3) , 10);
内部共同给人带来麻烦。我可以这样做
int a = pow(2, 3);
MIN(a, 10);
我正在寻找一种更好的方式,比如在宏中保留pow(2, 3)
更具可读性?可能吗?谢谢!
答案 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;
}