Wrap macro in do-while(0) to fix the warnings of stray `;`