有一天,一位同事注意到了常見的模式,他這樣做的:單行表達式分支並清除布爾標誌?
if (someBooleanFlag)
{
someBooleanFlag = FALSE;
...do some more stuff...
}
基本上,一個鎖存清除上讀取。並問我是否知道一個聰明的方式來測試國旗並將其清除爲單線,這樣他就可以擺脫樣板someBooleanFlag = FALSE;位。關於這是否是良好的作風還是不偏題,我發現我能爲他做的最好的是一個像
#define TESTANDCLEAR(var) (var ? var-- : 0)
這使得只有1和0正在使用的假設,而這是行不通的在掩碼上。我想我會轉向Stack的巫師,看看是否有更好的方法和其他技術可以使用。
(同樣,沒有必要討論是否做TESTANDCLEAR()的表達是好還是壞的作風,如果我們真的能做到這一點很多種學術活動,以及如何普遍)
下一個需要閱讀代碼的開發者,哪種方法最清晰,最容易理解? –