任何在宏中保持内部公共性的方法
Any way to keep the internal common in 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)
?有可能吗?谢谢
您可以使用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;
}
相关文章:
- 将函数类成员映射到类本身内部
- Boost Spirit,获取迭代器内部语义动作
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 内联函数中具有内部链接的全局变量
- 在函数内部的声明中初始化数组,并在外部使用它
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 卷曲bracers内部结构的声明
- 从函数角度看ID到文件路径的内部与外部映射
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 如何在pugixml中获取节点的内部XML
- 使用C链接在函数内部创建C++模板
- 指针没有更新它在void函数内部指向的值
- 方法内部但循环仍得到预期的不合格id错误C++
- C++:具有内部链接的正向声明常量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- libcurl 和 DNS ttl 中的内部连接管理
- 如何修改 lambda 内部字符串的向量
- 如果我将嵌套映射作为多重映射的值,如何将值插入内部映射?
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 任何在宏中保持内部公共性的方法