Hacker News
new
|
past
|
comments
|
ask
|
show
|
jobs
|
submit
login
_lffv
on Nov 23, 2020
|
parent
|
context
|
favorite
| on:
What is your favorite C programming trick? (2009)
C n00b here - why the `do {} while(0)`? Couldn't you just do something like `#define free(p) { free(p); p = NULL; }`?
deaddodo
on Nov 23, 2020
[–]
Semi-experienced C user here, I believe the anonymous block is perfectly adequate here. No idea why they are wrapping it in a single instance do loop, unless they’re unaware of block scoping or I’m unaware of some UB here.
btrask
on Nov 23, 2020
|
parent
[–]
do {} while(0) is a common idiom for macros in C, because it consumes the trailing semicolon, which a bare {} block doesn't do.
if(x) MACRO(); else something();
expands to
if(x) { ... }; // Error! else something();
Guidelines
|
FAQ
|
Lists
|
API
|
Security
|
Legal
|
Apply to YC
|
Contact
Search: