wrapping the macro's body in:<div><br></div><div>do { ... } while (false)</div><div><br></div><div>would make the the macro a proper statement so that:</div><div><br></div><div>if (cond)</div><div>  ASSERT(some_other_cond);</div>
<div>else</div><div>  do_something_cool ();</div><div><br></div><div>compiles as expected.</div><div><br></div><div>IMO, it would work as such</div><div><br></div><div>#define ASSERT_STM(cond,expr)</div><div><br></div><div>
<br><div class="gmail_quote">On Tue, Jul 26, 2011 at 6:36 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:reid.kleckner@gmail.com">reid.kleckner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
He wants to be able to resume execution from the debugger after<br>
assertion failure.<br>
<font color="#888888"><br>
Reid<br>
</font><div><div></div><div class="h5"><br>
On Tue, Jul 26, 2011 at 8:07 PM, Alistair Lynn <<a href="mailto:arplynn@gmail.com">arplynn@gmail.com</a>> wrote:<br>
> Hi-<br>
><br>
>> Yep, but tripping the debugger is highly non-portable.<br>
><br>
> You're suggesting that inline asm is more portable than calling abort?<br>
><br>
> Alistair<br>
><br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div>