PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] Linux WARN_ON 中的 !!condition
作者:
Eleina
(艾琳娜)
2016-08-22 20:25:21
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
作者:
ilikekotomi
(Young)
2016-08-22 20:29:00
上網查論壇也是看到只會等於0和1 學到一招
作者:
Eleina
(艾琳娜)
2016-08-22 20:29:00
likely / unlikely 的 macro 中會再做一次, 這裡有點多餘?
作者:
nowar100
(拋磚引玉)
2016-08-22 20:49:00
就是你說的那樣 不用管condition型態 永遠會得到true/false 用 int 去接 bool 應該也是老 code 了僅僅是想利用C any to bool implicit cast特性而已
作者:
LPH66
(-6.2598534e+18f)
2016-08-23 02:18:00
關於再做一次的問題, 現在的編譯器能把這樣的兩個判斷化簡不過這裡變成 0 或 1 其實我猜跟 likely / unlikely 有關因為 likely / unlikely 實際上是 expect 1/0但是傳進來的 condition 可以是任意整數
作者:
bluesoul
(å¿™æ»ä½ è€çˆ¸)
2016-08-23 13:49:00
應該也是用bool就好
繼續閱讀
[問題] opencv 出現 signal SIGABRT
allenchen821
[問題] bayer patten demosaic
okeyla
[問題] 關於Labview與C的wrapper.dll問題
hstrxgfcg216
[問題] mutex是class成員的相關疑問
hn12404988
[問題] ++重載的觀念
orafrank
[問題]請問哪個是x*7 最快的implement方法
j7210429
[問題] c++函式資料的問題
s52222b
[問題]access static variable 的權限問題
j7210429
[問題] explicit instantiation的問題
ialk
[問題] 測量時間,時間overflow的問題
psylove5566
Links
booklink
Contact Us: admin [ a t ] ucptt.com