了解用作函数的宏
Understanding macros used as functions
在这个片段中,我不明白FUNCTION(func,pred)
应该做什么。
#define FUNCTION(func,pred)
void func(int& a, int x){
if(!(a pred x)) a = x;
}
我也无法理解这一点:
FUNCTION(minimum, <)
FUNCTION(maximum, >)
有人可以解释一下吗?
预处理器替换所有标记: FUNCTION(func,pred)
void func(int& a, int x){
if(!(a pred x)) a = x;
}
因此,定义一个函数func
二元运算符作为pred
。所以,当你写这个的时候:
FUNCTION(minimum,<)
预处理器将其替换为:
void minimum(int& a, int x){
if(!(a < x))
a = x;
}
同样的事情发生在:
FUNCTION(maximum,>)
生产:
void maximum(int& a, int x){
if(!(a > x))
a = x;
}
。等等..
宏FUNCTION
正在定义一个名为 func
的函数。例如:
FUNCTION(minimum, <)
将定义一个这样的函数:
void minimum(int& a, int x) {
if(!(a < x)) {
a = x;
}
}
宏是一种代码生成方法。这段代码的作者显然觉得写出这个 2 行函数太费力了,反而用宏混淆了大家。
这绝对是宏损害(可读性)而不是帮助的情况。我不建议对此类基本功能执行此操作。
相关文章:
- 了解每月第一天函数的代码
- 了解构造函数在移动、复制、赋值语义中的行为
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- 了解在返回值之前和之后使用 EAX 的函数调用
- 了解模板函数(源代码为 .h)与其编译的 .lib 的关系
- 构造函数是否有一种现代C++方法来了解其'container'类?
- 了解类构造函数的静态强制转换
- 了解shared_ptr传入函数时引用计数何时递增
- 确认了解指向函数的指针
- 我想了解为什么在这个例子中使用引用函数?或者引用在c++函数中的重要性
- 了解从多个类派生时的虚函数
- 了解递归函数的执行顺序
- 了解元函数以在类型包中查找类型
- 了解复制构造函数和引用
- 了解函数返回对象的移动语义
- 了解派生类中C++析构函数的行为
- 了解类构造函数中的"内联"C++?
- 了解C++中函数的值类别
- C++11使variadic构造函数了解一个初始化列表的初始化列表
- 复制构造函数 - 了解问题