[問題] Linux WARN_ON 中的 !!condition
Linux
#ifndef WARN_ON
#define WARN_ON(condition) ({ \
int __ret_warn_on = !!(condition); \
if (unlikely(__ret_warn_on)) \
__WARN(); \
unlikely(__ret_warn_on); \
})
#endif
請問這裡使用雙重否定有什麼好處?
似乎是迫使 __ret_warn_on 只會等於 0 或 1
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.122.242.72
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1471868723.A.911.html
→
08/22 20:29, , 1F
08/22 20:29, 1F
→
08/22 20:29, , 2F
08/22 20:29, 2F
推
08/22 20:49, , 3F
08/22 20:49, 3F
→
08/22 20:50, , 4F
08/22 20:50, 4F
意思是如果不這樣做可能要先轉型囉? 例如檢查傳入的 (int *) 是否為 null
※ 編輯: Eleina (27.122.242.72), 08/22/2016 20:55:01
→
08/22 23:39, , 5F
08/22 23:39, 5F
推
08/23 02:18, , 6F
08/23 02:18, 6F
→
08/23 02:19, , 7F
08/23 02:19, 7F
→
08/23 02:20, , 8F
08/23 02:20, 8F
→
08/23 02:20, , 9F
08/23 02:20, 9F
推
08/23 13:49, , 10F
08/23 13:49, 10F