Define 语句中的do{} while(0) 经常在define语句中看到用do{} while(0)将一个程序片段包起来,一直感觉很奇怪,经查找,才发现这是在define语句使用中的一个tricky的情况。 define表达使用do{} while(0)的两个例子:
if(1 == 0) {(&head)->next = (&head); (&head)->prev = (&head);}; else head.val = 0;