任何在宏中保持内部公共性的方法

Any way to keep the internal common in macros?

本文关键字:内部 公共性 方法 任何      更新时间:2023-10-16

例如,我有一个简单的宏

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

我想用

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

内部常见问题。我可以做以下

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

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

您可以使用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;
}