2014-02-06 45 views
1

我在設備驅動代碼中發現了以下功能。以下功能的用意是什麼?

static void module_exit(void) 
{ 
     do { } while (0); 
} 

我的問題是,爲什麼他們用do { } while (0);這個功能裏面。他們可以簡單地從那裏返回而不是調用這個do { } while (0);。在這裏有do { } while (0);有什麼特別的理由嗎?

+1

它看起來像「剩飯垃圾」。如果沒有完全優化,(空)循環將立即在第一個條件檢查時終止。現在,如果在循環(也許是外部)中有*實際*代碼,那麼它可以使用'break'或'continue'作爲流量控制的一種形式.. – user2864740

+0

外觀http://stackoverflow.com/questions/ 3766827/how-do-do-while0-work-in-macro –

+0

優化編譯器甚至可能會優化整個循環。 –

回答

0

沒有什麼特別的理由可以使用do,通常在一個module_exit中有清理函數會取消註冊驅動程序。儘管會在你的情況下退出。雖然(0)像是假的情況,並且會立即脫離循環。