什么是意外宏替换?
在Vera++ C++ linter 中,规则 T016 规定:
对 min 和 max 函数的调用应防止意外宏替换。
x = max(y, z); // wrong, vulnerable to accidental macro substitution x = (max)(y, z); // OK x = max BOOST_PREVENT_MACRO_SUBSTITUTION (y, z); // OK
为什么这是一条好规则,需要这条规则的 min 和 max 函数有什么特别之处?