还有这里为啥要用while(0)包起来