1
我在設備驅動代碼中發現了以下功能。以下功能的用意是什麼?
static void module_exit(void)
{
do { } while (0);
}
我的問題是,爲什麼他們用do { } while (0);
這個功能裏面。他們可以簡單地從那裏返回而不是調用這個do { } while (0);
。在這裏有do { } while (0);
有什麼特別的理由嗎?
我在設備驅動代碼中發現了以下功能。以下功能的用意是什麼?
static void module_exit(void)
{
do { } while (0);
}
我的問題是,爲什麼他們用do { } while (0);
這個功能裏面。他們可以簡單地從那裏返回而不是調用這個do { } while (0);
。在這裏有do { } while (0);
有什麼特別的理由嗎?
沒有什麼特別的理由可以使用do,通常在一個module_exit中有清理函數會取消註冊驅動程序。儘管會在你的情況下退出。雖然(0)像是假的情況,並且會立即脫離循環。
它看起來像「剩飯垃圾」。如果沒有完全優化,(空)循環將立即在第一個條件檢查時終止。現在,如果在循環(也許是外部)中有*實際*代碼,那麼它可以使用'break'或'continue'作爲流量控制的一種形式.. – user2864740
外觀http://stackoverflow.com/questions/ 3766827/how-do-do-while0-work-in-macro –
優化編譯器甚至可能會優化整個循環。 –