當(dāng)我們定義一個宏時,do When(0)有什么用途?我正在閱讀Linux內(nèi)核,我發(fā)現(xiàn)許多宏都是這樣的:#define INIT_LIST_HEAD(ptr) do { \ (ptr)->next = (ptr); (ptr)->prev = (ptr); \} while (0)為什么他們使用這個而不是簡單地在{}中定義它?
3 回答

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
if (doit) INIT_LIST_HEAD(x); else displayError(x);

墨色風(fēng)雨
TA貢獻1853條經(jīng)驗 獲得超6個贊
它將擴展為“{(PTR)->Next.}”,因此,一個語句后面跟著第二個語句。如果語法是“if(表達式)語句”。否則不會與任何if相關(guān)聯(lián),因為您會編寫“if(表達式)語句”(一個“{.}”和一個“語句”)。
- 3 回答
- 0 關(guān)注
- 392 瀏覽
添加回答
舉報
0/150
提交
取消