[Ffmpeg-devel] [PATCH] move utf8 writing to libavutil
Måns Rullgård
mru
Sat Jul 8 21:56:18 CEST 2006
Justin Ruggles <jruggle at earthlink.net> writes:
> Please explain the benefit of the do/while. What does it protect against?
Without it,
if(whatever)
PUT_UTF8(...);
will have some quite unintended results without so much as a warning.
The idea with a do { } while(0) construct is to turn the entire macro
body into a single statement while still keeping the semicolon
(usually) placed after the macro invocation part of this same
statement. Simply enclosing the body in braces will make the final
semicolon form a new, empty statement, which will break things like
if(foo)
PUT_UTF8(...);
else
PUT_UTF8(...);
This one will give a compilation error, but the reason for the error
won't be obvious without knowledge of the macro. Besides, it's a
perfectly legitimate thing to want to do.
The idea is that something that looks like a single statement where it
is used should indeed behave like a single statement.
--
M?ns Rullg?rd
mru at inprovide.com
More information about the ffmpeg-devel
mailing list