看板 C_and_CPP 關於我們 聯絡資訊
這種寫法會寫在macro裡 因為有些compiler是不允許忽然出現block的 EX: #define aaa() do { xxx } while(0) 這樣如果使用者用在 if(xxx) aaa(); or bbb(); aaa(); ccc(); 都可以 如果定義成 #define aaa() { xxx } if(xxx) aaa(); 上面程式碼OK 但如果用在 bbb(); aaa(); ccc(); 展開來變成 bbb(); { xxx } ccc(); 這樣就樣看compiler接不接受了 因此kernel都會這麼寫 以維持移植性 ※ 引述《sceneryview (加油~~~)》之銘言: : 藉由這一篇來請問一個相關的問題 : 在linux kernel的程式中,有時後會見到以下的寫法 : do : { : code... : }while(0); : 從字面上來看,就是只作一次 : 感覺就沒必要加do {}while(0)了 : 有人知道這種寫法的特殊用意嗎?? : ※ 引述《scrush (阿慶)》之銘言: : : 不好意思,我一直對while(1)這邊有點不理解,爬文也沒看到我想要的答案才發文, : : 我常常看到一些 code在程式最底端加上個 while(1){}; 或是while(1){} : : 請問這是要做什麼用的?有加 ; 跟沒加 ; 有何分別?目的只是讓這段code一直執行嗎? : : 如果是的話為何不必直接寫 while(1){code} ,用while(1)把程式幫起來不就得了嗎? : : 還是說目的不同? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.97.250