在这个片段中,我无法理解.
.
.
checking whether to use expat... auto
checking for libexpat... (cached) no
configure: WARNING: expat is missing or unusable; some features may be unavailable.
.
.
.
应该做什么。
FUNCTION(func,pred)
我也无法理解:
#define FUNCTION(func,pred)\
void func(int& a, int x){ \
if(!(a pred x)) a = x; \
}
有人可以解释一下吗?
答案 0 :(得分:2)
FUNCTION(func,pred)
void func(int& a, int x){
if(!(a pred x)) a = x;
}
因此,使用二元运算符将函数func
定义为pred
。所以,当你写这个:
FUNCTION(minimum,<)
预处理器replaces,其中包含:
void minimum(int& a, int x){
if(!(a < x))
a = x;
}
同样的事情发生在:
FUNCTION(maximum,>)
产生
void maximum(int& a, int x){
if(!(a > x))
a = x;
}
......等等..
答案 1 :(得分:1)
宏FUNCTION
是定义名为func
的函数。例如:
FUNCTION(minimum, <)
会定义一个类似的函数:
void minimum(int& a, int x) {
if(!(a < x)) {
a = x;
}
}
宏是一种代码生成方法。这段代码的作者显然觉得写这个2行函数太麻烦了,而是把每个人都搞糊涂了。
这绝对是宏损害(可读性)而非帮助的情况。我不建议为这些基本功能这样做。