什麼是意外宏觀替代?什麼是意外宏觀替代?
在Vera++ C++棉短絨,排除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函數需要此規則?
+1。完全與我原先認爲的問題無關。我記得除了最小和最大值之外,還有一些其他的。 – WhozCraig 2013-03-16 16:07:06
BOOST_PREVENT_MACRO_SUBSTITUTION僅僅是「#定義BOOST_PREVENT_MACRO_SUBSTITUTION」(它沒有定義的任何值)。僅僅因爲他們爲宏選擇了一個描述性的名字,這是不可讀的。 – 2013-03-16 16:20:11
'#定義NOMINMAX'也有幫助。 – chris 2013-03-16 16:30:23